AWS 云集成角色授权配置¶
通过角色授权,您可以将 AWS 云账号接入 观测云,无需提供长期 Access Key 和 Secret Key。
按照本文完成 AWS 侧配置后,返回 观测云 填写账号 ID 和角色名称,即可测试并保存云账号。
配置前准备¶
- 准备需要接入的 AWS 账号,并确认其所属地区为中国区或国际区。
- 确认您在该 AWS 账号中有权限创建 IAM 角色及为角色添加内联策略;如无相关权限,请联系 AWS 管理员协助。
- 确认您可以在 观测云 中新增云账号。
本文适用于无需填写 Access Key 和 Secret Key 的角色授权模式。
步骤一 获取授权信息¶
- 在 观测云 进入集成 > 云账号管理,新建 AWS 云账号。
- 在选择认证方式中选择角色授权。
- 根据需要接入的 AWS 账号,选择中国区或国际区。
- 复制页面显示的 观测云 账号 ID(AWS)和外部 ID,保留此页面,后续配置时需要使用。
此处复制的是 观测云 平台提供的账号 ID,不是您自己的 AWS 账号 ID。外部 ID 由 观测云 平台自动生成,请勿自行填写其他值。
步骤二 在 AWS 中选择可信实体¶
- 登录需要接入的 AWS 账号,在 IAM 控制台进入角色 > 创建角色。
- 在选择可信实体页面,将可信实体类型设置为 AWS 账号。中国区控制台显示为亚马逊云科技账户。
- 选择另一个 AWS 账号,中国区控制台显示为另一个亚马逊云科技账户。
- 在账户 ID中填入步骤一复制的 观测云 账号 ID(AWS),即 观测云 平台提供的 12 位账号 ID。
- 勾选需要外部 ID,在外部 ID中粘贴步骤一从当前云账号配置页面复制的值。
- 核对账户 ID 和外部 ID 后,点击下一步,进入添加权限页面。
此处的账户 ID 是 观测云 平台提供的 AWS 账号 ID;返回 观测云 平台填写云账号信息时,填写的是您自己创建角色的 AWS 账号 ID。
步骤三 添加内联策略并创建角色¶
- 在添加权限页面,选择创建内联策略。
-
展开下方内容,复制完整 JSON,并替换策略编辑器中的默认内容。
展开采集权限策略 JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "account:GetAccountInformation", "acm:ListCertificates", "airflow:GetEnvironment", "airflow:ListEnvironments", "aoss:ListCollections", "apigateway:GET", "appsync:ListGraphqlApis", "appsync:ListTagsForResource", "autoscaling:Describe*", "aws-portal:ViewBilling", "backup:DescribeBackupVault", "backup:List*", "batch:DescribeJobDefinitions", "batch:DescribeJobQueues", "batch:DescribeJobs", "batch:ListJobs", "bcm-data-exports:GetExport", "bcm-data-exports:ListExports", "budgets:ViewBudget", "ce:GetCostAndUsageWithResources", "ce:GetDimensionValues", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListTagsForResource", "cloudtrail:DescribeTrails", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus", "cloudtrail:ListTrails", "cloudtrail:LookupEvents", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "codebuild:BatchGetProjects", "codebuild:ListProjects", "codedeploy:BatchGet*", "codedeploy:List*", "cognito-idp:DescribeUserPool", "cognito-idp:ListUserPools", "cost-optimization-hub:GetRecommendation", "cost-optimization-hub:ListRecommendations", "cur:DescribeReportDefinitions", "dax:DescribeClusters", "directconnect:Describe*", "dms:DescribeReplicationInstances", "dms:DescribeReplicationTasks", "dms:ListTagsForResource", "dsql:GetCluster", "dsql:ListClusters", "dsql:ListTagsForResource", "dynamodb:Describe*", "dynamodb:List*", "ec2:Describe*", "ecr:DescribeRepositories", "ecs:Describe*", "ecs:List*", "eks:DescribeCluster", "eks:ListClusters", "elasticache:Describe*", "elasticache:List*", "elasticbeanstalk:DescribeEnvironments", "elasticfilesystem:DescribeAccessPoints", "elasticfilesystem:DescribeFileSystems", "elasticfilesystem:DescribeTags", "elasticloadbalancing:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:List*", "es:DescribeDomains", "es:DescribeElasticsearchDomains", "es:ListDomainNames", "es:ListTags", "events:CreateEventBus", "events:ListRules", "firehose:DescribeDeliveryStream", "firehose:ListDeliveryStreams", "fsx:DescribeFileSystems", "fsx:ListTagsForResource", "globalaccelerator:ListAccelerators", "glue:BatchGetJobs", "glue:GetJob", "glue:GetJobRuns", "glue:GetJobs", "glue:ListJobs", "health:DescribeAffectedEntities", "health:DescribeEventDetails", "health:DescribeEvents", "healthlake:DescribeFHIRDatastore", "healthlake:ListFHIRDatastores", "healthlake:ListTagsForResource", "iam:GetAccountAuthorizationDetails", "iam:GetLoginProfile", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAccountAliases", "iam:ListAttachedRolePolicies", "iam:ListAttachedUserPolicies", "iam:ListGroupsForUser", "iam:ListMFADevices", "iam:ListPolicies", "iam:ListPolicyTags", "iam:ListRoleTags", "iam:ListSSHPublicKeys", "iam:ListUserTags", "iam:ListUsers", "iam:ListVirtualMFADevices", "iot:GetV2LoggingOptions", "kafka:ListClustersV2", "kafkaconnect:DescribeConnector", "kafkaconnect:ListConnectors", "kinesis:Describe*", "kinesis:List*", "kinesisanalytics:ListApplications", "kms:DescribeKey", "kms:ListKeys", "lambda:GetFunctionConfiguration", "lambda:GetMicrovmImageVersion", "lambda:List*", "logs:DeleteSubscriptionFilter", "logs:DescribeDeliveries", "logs:DescribeDeliverySources", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:DescribeSubscriptionFilters", "logs:FilterLogEvents", "logs:GetDeliveryDestination", "logs:ListTagsForResource", "logs:PutSubscriptionFilter", "logs:TestMetricFilter", "memorydb:DescribeClusters", "memorydb:ListTags", "mq:ListBrokers", "network-firewall:DescribeFirewall", "network-firewall:DescribeLoggingConfiguration", "network-firewall:ListFirewalls", "oam:ListAttachedLinks", "oam:ListSinks", "organizations:Describe*", "organizations:List*", "pcs:ListClusters", "pcs:ListComputeNodeGroups", "pcs:ListQueues", "rds:Describe*", "rds:List*", "redshift-serverless:ListNamespaces", "redshift-serverless:ListTagsForResource", "redshift-serverless:ListWorkgroups", "redshift:DescribeClusters", "redshift:DescribeLoggingStatus", "route53:List*", "route53resolver:ListResolverQueryLogConfigs", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketLogging", "s3:GetBucketNotification", "s3:GetBucketPolicy", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:GetBucketTagging", "s3:GetBucketVersioning", "s3:GetBucketWebsite", "s3:GetEncryptionConfiguration", "s3:GetLifecycleConfiguration", "s3:GetObject", "s3:GetReplicationConfiguration", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:PutBucketNotification", "sagemaker:DescribeEndpoint", "sagemaker:ListEndpoints", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "ses:Get*", "ses:List*", "sns:GetSubscriptionAttributes", "sns:GetTopicAttributes", "sns:List*", "sns:Publish", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "sqs:ListQueueTags", "sqs:ListQueues", "ssm:GetServiceSetting", "ssm:ListCommands", "states:DescribeStateMachine", "states:ListStateMachines", "states:ListTagsForResource", "storagegateway:DescribeGatewayInformation", "storagegateway:DescribeNFSFileShares", "storagegateway:DescribeSMBFileShares", "storagegateway:ListFileShares", "storagegateway:ListGateways", "support:DescribeTrustedAdvisor*", "support:RefreshTrustedAdvisorCheck", "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "timestream:DescribeEndpoints", "trustedadvisor:ListRecommendationResources", "trustedadvisor:ListRecommendations", "wafv2:GetWebACL", "wafv2:ListLoggingConfigurations", "wafv2:ListWebACLs", "xray:BatchGetTraces", "xray:GetTraceSummaries" ], "Resource": "*" } ] }以上为基础采集所需的完整权限清单,请完整复制。
-
按照 AWS 页面的提示检查权限范围,处理错误或安全警告后,点击下一步。如不确定是否符合您所在组织的要求,请联系 AWS 管理员审核。
- 在命名、查看和创建页面,按页面提示填写角色名称,例如
CloudIntegrationRole,检查配置后点击创建角色。 - 记录创建的角色名称及其所属的 AWS 账号 ID,供下一步填写。
步骤四 返回 观测云 平台填写账号信息¶
返回步骤一保留的云账号配置页面,填写以下信息:
| 配置项 | 填写说明 |
|---|---|
| 账号 ID | 填写您自己的 AWS 账号 ID,即步骤三创建角色的账号。不要填写页面上方的 观测云 平台账号 ID。 |
| 角色名称 | 填写步骤三创建的角色名称,例如 CloudIntegrationRole,无需填写完整角色 ARN。 |
| 账户别名 | 填写便于识别该云账号的名称,采集的数据也会携带此别名。 |
| 账号标签 | 按需添加标签名称和值,例如名称为 env、值为 production,点击添加;不需要时可留空。填写规则参见账号标签。 |
步骤五 测试并保存¶
- 点击测试,检查当前授权配置。
- 测试通过后,点击保存。
- 按照配置集成的说明安装所需的 AWS 集成,并检查是否有数据上报。
保存云账号后,仍需安装相应集成才能开始采集数据。
常见问题¶
测试失败怎么办?¶
请先核对以下信息,修正后重新测试:
- 地区是否选择正确。
- 账号 ID 是否为您创建角色的 AWS 账号 ID。
- 角色名称是否与 AWS 中一致。
- 角色信任关系中的账户 ID 是否为所选地区的 观测云 平台 AWS 账号 ID。
- 是否勾选了需要外部 ID,填写的外部 ID 是否与当前云账号配置页面完全一致。
如仍无法通过,请将具体错误信息提供给 AWS 管理员或 观测云 支持人员协助排查。
测试通过后,为什么没有采集到数据?¶
请确认已安装并启用对应的 AWS 集成、选择了正确的采集区域,并已在步骤三为角色添加完整的采集权限内联策略。若采集报错提示权限不足,请联系 AWS 管理员根据具体报错核查。
重新生成外部 ID 后需要做什么?¶
AWS 角色信任策略中的外部 ID 也需要同步更新。两侧不一致时,后续授权可能失败并影响采集;已在采集的账号,请先联系 观测云 支持人员确认更新步骤。