これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Cloud Development Kit (AWS CDK) アプリケーションをデプロイする際の一般的な問題をトラブルシューティングします。
デプロイ時に間違ったサービスプリンシパルが作成される
( AWS Identity and Access Management IAM) ロールを含む CDK アプリケーションをサービスプリンシパルでデプロイすると、サービスプリンシパルのドメインが正しく作成されていないことがわかります。
以下は、Amazon CloudWatch Logs がサービスプリンシパルを使用して引き受けることができる IAM ロールを作成する場合の基本的な例です。
import * as cdk from 'aws-cdk-lib';
import * as iam from 'aws-cdk-lib/aws-iam';
import { Construct } from 'constructs';
export class MyCdkProjectStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Create an IAM role for CloudWatch Logs to assume
const cloudWatchLogsRole = new iam.Role(this, 'CloudWatchLogsRole', {
assumedBy: new iam.ServicePrincipal('logs.amazonaws.com'), // This is for CloudWatch Logs
managedPolicies: [
iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSCloudWatchLogsFullAccess')
]
});
// You can then use this role in other constructs or configurations where CloudWatch Logs needs to assume a role
}
}
このスタックをデプロイすると、logs.amazonaws.com
という名前のサービスプリンシパルが作成されるはずです。ほとんどの場合、サービスプリンシパルには という名前 AWS のサービス を使用します
。service
.amazonaws.com
一般的な原因
v2.150.0 より AWS CDK 前のバージョンの を使用している場合は、このバグが発生する可能性があります。古い AWS CDK バージョンでは、サービスプリンシパルの命名は標準化されていないため、ドメインが正しくないサービスプリンシパルが作成される可能性があります。
AWS CDK v2.51.0 では、自動的に作成されたすべてのサービスプリンシパルを標準化して、可能な
場合は使用できるように修正が実装されました。この修正は、service
.amazonaws.com@aws-cdk/aws-iam:standardizedServicePrincipals
機能フラグを許可することで利用できます。
v2 AWS CDK .150.0 以降、これはデフォルトの動作になりました。
解決方法
v2 AWS CDK .150.0 以降にアップグレードします。
v2.150.0 AWS CDK 以降にアップグレードできない場合は、v2.51.0 以降にアップグレードする必要があります。次に、cdk.json
ファイルで機能フラグ @aws-cdk/aws-iam:standardizedServicePrincipals
を許可します。