AWS IAM Service Principals Reference

Search the complete AWS service principal reference for IAM trust policies, resource policies, and service-linked role setup.

Generated AWS service principal data

Generated from AWS docs and Policy Generator data for IAM trust policy lookups.

200 of 587 matching rows shown

Service nameService principalReference
AWS App2Containera2c.amazonaws.com-
Alexa for Businessa4b.amazonaws.com-
AWS IAM Access Analyzeraccess-analyzer.amazonaws.com-
AWS Account Managementaccount.amazonaws.com-
AWS Private Certificate Authorityacm-pca.amazonaws.com-
AWS Certificate Manager (ACM)acm.amazonaws.comDocumentation
AWS Compute Optimizer Automationaco-automation.amazonaws.com-
AWS Action Recommendationsaction-recommendations.amazonaws.com-
AWS Activateactivate.amazonaws.com-
Amazon WorkSpaces AgentAccess MCP Serveragentaccess-mcp.amazonaws.com-
AWS DevOps Agent Serviceaidevops.amazonaws.com-
Amazon AI Operationsaiops.amazonaws.com-
Amazon MWAA Environmentairflow-env.amazonaws.com-
AWS MWAA Serverlessairflow-serverless.amazonaws.com-
Amazon Managed Workflows for Apache Airflowairflow.amazonaws.com-
Alexa App Kitalexa-appkit.amazon.com-
Alexa Smart Homealexa-connectedhome.amazon.com-
Amazon MQamazonmq.amazonaws.com-
AWS Amplifyamplify.amazonaws.com-
AWS Amplify Adminamplifybackend.amazonaws.com-
AWS Amplify UI Builderamplifyuibuilder.amazonaws.com-
Amazon OpenSearch Serverlessaoss.amazonaws.com-
Amazon EventBridgeapidestinations.events.amazonaws.com-
Amazon API Gateway Managementapigateway.amazonaws.com-
Amazon AppIntegrationsapp-integrations.amazonaws.comDocumentation
AWS AppConfigappconfig.amazonaws.com-
AWS AppFabricappfabric.amazonaws.com-
Amazon AppFlowappflow.amazonaws.com-
AWS Application Auto Scalingapplication-autoscaling.amazonaws.com-
Application Cost Profilerapplication-cost-profiler.amazonaws.com-
CloudWatch Application Insightsapplication-insights.amazonaws.com-
Amazon CloudWatch Application Signals MCP Serverapplication-signals-mcp.amazonaws.com-
Amazon CloudWatch Application Signalsapplication-signals.amazonaws.com-
Amazon CloudWatchapplication-signals.cloudwatch.amazonaws.com-
AWS Application Transformation Serviceapplication-transformation.amazonaws.com-
Amazon CloudWatch Application Insightsapplicationinsights.amazonaws.com-
AWS App Mesh Previewappmesh-preview.amazonaws.com-
AWS App Mesh Previewappmesh.amazonaws.comDocumentation
AWS App Runnerapprunner.amazonaws.com-
Amazon AppStream 2.0appstream.amazonaws.com-
Application Auto Scalingappstream.application-autoscaling.amazonaws.com-
AWS App Studioappstudio.amazonaws.com-
AWS AppSyncappsync.amazonaws.com-
AWS Mainframe Modernization Application Testingapptest.amazonaws.com-
Amazon Managed Service for Prometheusaps.amazonaws.com-
Amazon ARC Region switcharc-region-switch.amazonaws.com-
Amazon Application Recovery Controller - Zonal Shiftarc-zonal-shift.amazonaws.com-
Application Discovery Arsenalarsenal.amazonaws.com-
AWS Artifactartifact.amazonaws.com-
AWS Cost Explorerassets.marketplace.amazonaws.com-
Amazon Athenaathena.amazonaws.com-
AWS Audit Managerauditmanager.amazonaws.comDocumentation
Automationautomation.amazonaws.com-
AWS Auto Scalingautoscaling-plans.amazonaws.comDocumentation
Amazon EC2 Auto Scalingautoscaling.amazonaws.comDocumentation
Aws Artifact Account Syncaws-artifact-account-sync.amazonaws.com-
Claude Platform on AWSaws-external-anthropic.amazonaws.com-
AWS Marketplace Management Portalaws-marketplace-management.amazonaws.com-
AWS Cost Exploreraws-marketplace.amazonaws.com-
AWS Billing Consoleaws-portal.amazonaws.com-
AWS Connector Serviceawsconnector.amazonaws.com-
Amazon S3awspolicygen.s3.amazonaws.com-
AWS B2B Data Interchangeb2bi.amazonaws.com-
AWS Backup Gatewaybackup-gateway.amazonaws.com-
AWS Backup Searchbackup-search.amazonaws.com-
AWS Backup storagebackup-storage.amazonaws.com-
AWS Backupbackup.amazonaws.com-
AWS Batchbatch.amazonaws.com-
Amazon S3batchoperations.s3.amazonaws.com-
AWS Billing and Cost Management Dashboardsbcm-dashboards.amazonaws.com-
AWS Billing And Cost Management Data Exportsbcm-data-exports.amazonaws.com-
AWS Billing And Cost Management Pricing Calculatorbcm-pricing-calculator.amazonaws.com-
AWS Billing And Cost Management Recommended Actionsbcm-recommended-actions.amazonaws.com-
Amazon Bedrock Agentcorebedrock-agentcore.amazonaws.com-
Amazon Bedrock Powered by AWS Mantlebedrock-mantle.amazonaws.com-
Amazon Bedrockbedrock.amazonaws.com-
AWS Billingbilling.amazonaws.com-
AWS Billing Conductorbillingconductor.amazonaws.com-
AWS Billing Consolebillingconsole.amazonaws.com-
Amazon Braketbraket.amazonaws.com-
AWS Budget Servicebudgets.amazonaws.com-
AWS BugBustbugbust.amazonaws.com-
AWS App Runnerbuild.apprunner.amazonaws.com-
Amazon OpenSearch Servicecases.amazonaws.com-
Amazon Keyspaces (for Apache Cassandra)cassandra.amazonaws.com-
Application Auto Scalingcassandra.application-autoscaling.amazonaws.com-
AWS Cost Explorer Servicece.amazonaws.com-
Amazon Lexchannels.lex.amazonaws.com-
Amazon Lexchannels.lexv2.amazonaws.com-
AWS Chatbotchatbot.amazonaws.com-
Amazon Chimechime.amazonaws.com-
AWS Clean Rooms MLcleanrooms-ml.amazonaws.com-
AWS Clean Roomscleanrooms.amazonaws.com-
AWS Cloud9cloud9.amazonaws.comDocumentation
Amazon Cloud Directoryclouddirectory.amazonaws.com-
AWS Cloud Control APIcloudformation.amazonaws.com-
Amazon CloudFront KeyValueStorecloudfront-keyvaluestore.amazonaws.com-
Amazon CloudFrontcloudfront.amazonaws.com-
AWS CloudHSMcloudhsm.amazonaws.comDocumentation
Amazon CloudSearchcloudsearch.amazonaws.com-
AWS CloudShellcloudshell.amazonaws.com-
AWS CloudTrail Datacloudtrail-data.amazonaws.com-
AWS CloudTrailcloudtrail.amazonaws.com-
AWS Account Managementcloudwatch-crossaccount.amazonaws.com-
Amazon CloudWatchcloudwatch.amazonaws.com-
AWS CodeArtifactcodeartifact.amazonaws.com-
AWS CodeBuildcodebuild.amazonaws.com-
Codecatalyst Runnercodecatalyst-runner.amazonaws.com-
Amazon CodeCatalystcodecatalyst.amazonaws.comDocumentation
AWS CodeCommitcodecommit.amazonaws.com-
AWS CodeConnectionscodeconnections.amazonaws.com-
AWS CodeDeploy secure host commands servicecodedeploy-commands-secure.amazonaws.com-
AWS CodeDeploycodedeploy.amazonaws.com-
Amazon CodeGuru Profilercodeguru-profiler.amazonaws.comDocumentation
Amazon CodeGuru Reviewercodeguru-reviewer.amazonaws.com-
Amazon CodeGuru Securitycodeguru-security.amazonaws.com-
Amazon CodeGurucodeguru.amazonaws.com-
AWS CodePipelinecodepipeline.amazonaws.com-
AWS CodeStar Connectionscodestar-connections.amazonaws.com-
AWS CodeStar Notificationscodestar-notifications.amazonaws.comDocumentation
AWS CodeStarcodestar.amazonaws.com-
Amazon CodeWhisperercodewhisperer.amazonaws.com-
Cognito Identity Us Govcognito-identity-us-gov.amazonaws.com-
Amazon Cognito Identitycognito-identity.amazonaws.com-
Amazon Cognito User Poolscognito-idp.amazonaws.com-
Amazon Cognito Synccognito-sync.amazonaws.com-
Amazon Comprehendcomprehend.amazonaws.com-
Amazon Comprehend Medicalcomprehendmedical.amazonaws.com-
AWS Compute Optimizercompute-optimizer.amazonaws.comDocumentation
Config Conformsconfig-conforms.amazonaws.com-
Config Multiaccountsetupconfig-multiaccountsetup.amazonaws.com-
AWS Configconfig.amazonaws.comDocumentation
Amazon Connect Outbound Campaignsconnect-campaigns.amazonaws.com-
Amazon Connect Customerconnect.amazonaws.comDocumentation
AWS Console Mobile Appconsoleapp.amazonaws.com-
AWS Consolidated Billingconsolidatedbilling.amazonaws.com-
AWS Application Discovery Servicecontinuousexport.discovery.amazonaws.com-
Contract Iqcontract.iq.amazonaws.com-
Amazon DynamoDBcontributorinsights.dynamodb.amazonaws.com-
AWS Control Catalogcontrolcatalog.amazonaws.com-
AWS Control Towercontroltower.amazonaws.com-
AWS Cost Optimization Hubcost-optimization-hub.amazonaws.com-
Cost Optimization Hub Bcmcost-optimization-hub.bcm.amazonaws.com-
AWS Cost Anomaly Detectioncostalerts.amazonaws.com-
AWS IoT Corecredentials.iot.amazonaws.com-
AWS Cost and Usage Reportcur.amazonaws.com-
Application Auto Scalingcustom-resource.application-autoscaling.amazonaws.com-
Amazon RDScustom.rds-preview.amazonaws.com-
AWS Directory Servicecustom.rds.amazonaws.com-
AWS Customer Verification Servicecustomer-verification.amazonaws.com-
AWS Glue DataBrewdatabrew.amazonaws.com-
AWS Data Exchangedataexchange.amazonaws.com-
AWS Data Pipelinedatapipeline.amazonaws.com-
AWS DataSyncdatasync.amazonaws.com-
Amazon DataZonedatazone.amazonaws.com-
Datazonecontroldatazonecontrol.amazonaws.com-
Amazon DynamoDB Accelerator (DAX)dax.amazonaws.comDocumentation
Database Query Metadata Servicedbqms.amazonaws.com-
AWS Deadline Clouddeadline.amazonaws.com-
Deepcomposerdeepcomposer.amazonaws.com-
AWS DeepLensdeeplens.amazonaws.com-
Deepracerdeepracer.amazonaws.com-
CloudWatch Logs Deliverydelivery.logs.amazonaws.com-
Amazon Detectivedetective.amazonaws.com-
AWS Device Farmdevicefarm.amazonaws.com-
Amazon DevOps Gurudevops-guru.amazonaws.comDocumentation
Diodediode.amazonaws.com-
AWS Direct Connectdirectconnect.amazonaws.comDocumentation
AWS Application Discovery Servicediscovery.amazonaws.com-
Amazon Data Lifecycle Managerdlm.amazonaws.com-
AWS Database Migration Servicedms.amazonaws.com-
Dms Region Namedms.region-name.amazonaws.com-
AWS Migration Hubdmsintegration.migrationhub.amazonaws.com-
Amazon DocumentDB Elastic Clustersdocdb-elastic.amazonaws.comDocumentation
AWS Elastic Disaster Recoverydrs.amazonaws.comDocumentation
AWS Directory Service Datads-data.amazonaws.com-
AWS Directory Serviceds.amazonaws.comDocumentation
Amazon Aurora DSQLdsql.amazonaws.comDocumentation
Amazon DynamoDBdynamodb.amazonaws.com-
Application Auto Scalingdynamodb.application-autoscaling.amazonaws.com-
Amazon Elastic Block Storeebs.amazonaws.com-
Ecec.amazonaws.com-
Amazon EC2 Instance Connectec2-instance-connect.amazonaws.comDocumentation
Amazon EC2ec2.amazonaws.com-
Application Auto Scalingec2.application-autoscaling.amazonaws.comDocumentation
Ec2fastlaunchec2fastlaunch.amazonaws.com-
Amazon EC2 Fleetec2fleet.amazonaws.com-
Amazon Message Delivery Serviceec2messages.amazonaws.com-
Amazon EC2 Scheduled Instancesec2scheduled.amazonaws.com-
Amazon Elastic Container Registry Publicecr-public.amazonaws.com-
Amazon Elastic Container Registryecr.amazonaws.com-
Amazon ECS MCP Serviceecs-mcp.amazonaws.com-
Amazon ECS Tasksecs-tasks.amazonaws.com-
Amazon Elastic Container Serviceecs.amazonaws.com-
Application Auto Scalingecs.application-autoscaling.amazonaws.com-
AWS Lambdaedgelambda.amazonaws.com-
Amazon EKS Autheks-auth.amazonaws.com-
Eks Connectoreks-connector.amazonaws.com-
Amazon EKS Fargate Podseks-fargate-pods.amazonaws.com-
Amazon EKS Fargateeks-fargate.amazonaws.com-

What is an AWS service principal?

A service principal is an identifier that represents an AWS service in IAM policies. When you see something like lambda.amazonaws.com or ec2.amazonaws.comin a policy's Principal element, that's a service principal. These identifiers allow AWS services to assume IAM roles and perform actions on your behalf.

Think of service principals as the identity card that AWS services present when they need to access resources in your account. Without the correct service principal in your trust policy, an AWS service cannot assume the role you created for it.

The service principal is defined by AWS itself. You cannot create custom service principals or use wildcards like "Service": "*" in IAM policies. Each AWS service has its own specific identifier.

How to use this service principal list

  1. Search for the AWS service name, such as Lambda, ECS Tasks, CloudTrail, or CodeBuild.
  2. Copy the exact service principal value, for example lambda.amazonaws.com or ecs-tasks.amazonaws.com.
  3. Add it to the Principal.Service field in your IAM role trust policy or resource-based policy.
  4. Use the documentation link when you need AWS service-specific trust policy requirements.
  5. Add aws:SourceAccount or aws:SourceArn conditions whenever the target AWS service supports them.

The most common mistake is copying a service name instead of the service principal. IAM needs the exact principal string in the policy, not the marketing name of the AWS service.

Service principal format and structure

The standard service principal format is:

service-name.amazonaws.com

Common examples include:

  • lambda.amazonaws.com for AWS Lambda
  • ec2.amazonaws.com for Amazon EC2
  • s3.amazonaws.com for Amazon S3
  • ecs-tasks.amazonaws.com for Amazon ECS tasks
  • codebuild.amazonaws.com for AWS CodeBuild

When multiple services need to assume the same role, specify them as an array:

"Principal": {
  "Service": [
    "ecs.amazonaws.com",
    "elasticloadbalancing.amazonaws.com"
  ]
}

This syntax is useful when you need a shared role for services that work together. For a deeper CDK example, read the guide on creating IAM roles with multiple principals using AWS CDK.

How service principals enable service-to-service access

  1. An AWS service, such as Lambda, needs to access resources in your account.
  2. The service presents its service principal and calls sts:AssumeRole.
  3. IAM checks the role's trust policy to verify the service principal is allowed.
  4. If authorized, IAM returns temporary security credentials.
  5. The service uses these credentials to access your resources.

This mechanism ensures that only the intended AWS services can assume roles in your account. The trust policy acts as the gatekeeper, and the service principal is the key.

Trust policies for IAM roles

Trust policies define which principals can assume an IAM role. For service roles, you specify the AWS service principal that should be able to assume the role.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

This trust policy allows AWS Lambda to assume the role. When Lambda needs to execute your function, it presents its service principal and calls sts:AssumeRole. IAM validates the trust policy and issues temporary credentials.

Resource-based policies

Service principals also appear in resource-based policies attached to AWS resources like S3 buckets, SNS topics, or SQS queues. These policies allow AWS services to access your resources directly.

For example, an S3 bucket policy that allows CloudTrail to write logs uses the cloudtrail.amazonaws.com service principal. Add aws:SourceAccount or aws:SourceArn conditions whenever possible so another account cannot misuse the service principal to write to your resource.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CloudTrailAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudtrail.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::my-cloudtrail-bucket",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        }
      }
    },
    {
      "Sid": "CloudTrailWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudtrail.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-cloudtrail-bucket/AWSLogs/111122223333/*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        }
      }
    }
  ]
}

Service-linked roles

Service-linked roles are a special type of service role that's predefined by an AWS service. These roles include the permissions the service needs to operate, and only that specific service can assume them.

  • AWS defines the permissions and trust policy for the role.
  • Many services create the role automatically when you first use the service.
  • You usually cannot delete the role until the dependent service resources are removed.
  • The role name typically follows the AWSServiceRoleForServiceName pattern.
ServiceService-linked role nameService principal
Amazon RDSAWSServiceRoleForRDSrds.amazonaws.com
AWS LambdaAWSServiceRoleForLambdalambda.amazonaws.com
Amazon API GatewayAWSServiceRoleForAPIGatewayops.apigateway.amazonaws.com
AWS Systems ManagerAWSServiceRoleForAmazonSSMssm.amazonaws.com

Regionalized service principals

Most service principals work globally across all AWS regions. For opt-in regions launched after March 20, 2019, service principal behavior changes for cross-region requests.

Common opt-in regions include:

Region nameRegion code
Africa (Cape Town)af-south-1
Asia Pacific (Hong Kong)ap-east-1
Asia Pacific (Hyderabad)ap-south-2
Europe (Milan)eu-south-1
Middle East (UAE)me-central-1
  • Same-region requests normally use service-name.amazonaws.com.
  • Cross-region requests from opt-in regions use service-name.region.amazonaws.com.
  • For IAM role trust policies, AWS recommends the non-regionalized format because IAM is global.

Example: an S3 bucket in ap-east-1 sending notifications to an SNS topic in another region may need s3.ap-east-1.amazonaws.com instead of s3.amazonaws.com.

{
  "Effect": "Allow",
  "Principal": {
    "Service": "s3.ap-east-1.amazonaws.com"
  },
  "Action": "SNS:Publish",
  "Resource": "arn:aws:sns:ap-southeast-1:111122223333:MyTopic",
  "Condition": {
    "StringEquals": {
      "aws:SourceAccount": "111122223333"
    },
    "ArnLike": {
      "aws:SourceArn": "arn:aws:s3:::my-bucket-*"
    }
  }
}

Confused deputy protection

The confused deputy problem occurs when an entity without permission tricks a more privileged service into performing actions on its behalf. With service principals, this usually appears in cross-service access.

Use these condition keys in resource policies where supported:

Condition keyPurpose
aws:SourceArnLimits access to a specific source resource.
aws:SourceAccountLimits access to a specific AWS account.
aws:SourceOrgIDLimits access to your AWS Organization.
aws:SourceOrgPathsLimits access to specific OU paths.

For multi-account environments, Resource Control Policies can enforce this centrally. The pattern below denies S3 access by AWS service principals unless the request comes from your AWS Organization:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnforceConfusedDeputyProtection",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:*"],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceOrgID": "o-abc123xyz"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}

Infrastructure as code examples

AWS CDK provides the ServicePrincipal class for trust policies:

import * as iam from 'aws-cdk-lib/aws-iam';

const lambdaRole = new iam.Role(this, 'LambdaExecutionRole', {
  assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
  description: 'Execution role for Lambda function',
});

In CloudFormation, define service principals in the AssumeRolePolicyDocument:

Resources:
  CloudFormationServiceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: cloudformation.amazonaws.com
            Action: sts:AssumeRole

Troubleshooting service principal errors

  • Invalid principal in policy: check the service principal format, avoid wildcards in the Service element, and verify the service principal exists in the table.
  • Access Denied when a service assumes a role: verify the trust policy includes the correct service principal and allows sts:AssumeRole.
  • Cross-region requests failing: check whether the source is in an opt-in region and needs the regionalized service principal format.
  • Service-linked role cannot be deleted: remove the resources that depend on the service-linked role first.

IDE autocomplete

If you prefer working directly in your IDE, the IAM Service Principal Snippets extension autocompletes service principals directly in IAM policies.

Next step

Want AWS engineering that feels this practical?

I build these tools to make AWS easier to manage. If this level of quality is what you want in your own cloud platform, Towards The Cloud can help with landing zones, infrastructure as code, security reviews, migrations, and cost optimization.