不同账户下的 AWS CodeGuru 分析器

AWS CodeGuru profiler under different account

我们正在尝试构建集中式 CodeGuru 分析器仪表板,如 https://aws.amazon.com/blogs/devops/building-a-centralized-codeguru-profiler-dashboard-multi-account/ 中的文档所述。

因此,实际上,我们的 CodeGuru 分析组位于中央 aws-code-analysis 帐户下,实际应用程序 运行 位于 aws-application 帐户下。我们正面临跨账户连接的问题。看来 aws-application 账户下的代理 运行 正在尝试在本地 aws-application 账户下寻找分析组,而不是连接到中央 aws-code-analysis 账户。

代理的命令行调用 (as documented here) as well as integration by code (as documented here) 仅接受分析组名称作为输入,而不接受完整的 ARN 或帐户 ID、分析组名称组合。所以我不确定代理将如何确定要连接到哪个帐户?我找不到明确指定帐户 ID 以在任何地方使用的方法。

感谢任何指点。

您应该能够使用 awsCredentialsProvider 从您的中央帐户传递角色,例如"arn:aws:iam::<CODEGURU_CENTRAL_ACCOUNT_ID>:role/CodeGuruCrossAccountRole"。这会将代理配置为将分析数据发送到此帐户。

我还要检查该区域是否设置为集中帐户中的分析组的区域。所以它应该看起来像这样:

static String roleArn = "arn:aws:iam::<v>:role/CodeGuruCrossAccountRole";
static String sessionName = "codeguru-java-session";


Profiler.builder()
  .profilingGroupName("JavaAppProfilingGroup")
  .awsCredentialsProvider(AwsCredsProvider.getCredentials(
                                        roleArn,
                                        sessionName))
  .region(<CODEGURU_CENTRAL_ACCOUNT_REGION>)
  .withHeapSummary(true)
  .build()
  .start();