こんにちは、ちゃりおです。
CI時に「cdk diff」を行いたいことがありました。
ローカルから実行するときは、「cdk deploy」を実行する関係でAdmin権限を使っていました。
「cdk diff」ではCFNとの差分確認のみで新規リソースを作ることはないため、権限を絞れると思ってしらべてみました。
「cdk diff」に必要なIAMポリシー
結論
IAMポリシー「cloudformation:DescribeStacks」を割り当てれば実行可能です。
検証方法
検証用のIAMユーザーを作成して、cdkはsample-appを使って「cdk diff」を試しました。
$ cdk init sample-app --language=typescript
$ cdk diff
権限無いときのエラー
とりあえず、IAMユーザーに権限あたえずにdiff実行してみました。
エラーメッセージからは「cloudformation:DescribeStacks」が必要そうなことがわかりました。
cdk diff (git)-[master]
Stack CdkDiffStack
User: arn:aws:iam::XXXXXXXXX:user/cdkdiff is not authorized to perform: cloudformation:DescribeStacks on resource: arn:aws:cloudformation:ap-northeast-1:949637840634:stack/CdkDiffStack/*
インラインポリシー「cloudformation:DescribeStacks」成功
エラーメッセージの通り、「cloudformation:DescribeStacks」を追加。
結果は、成功でした。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "cloudformation:DescribeStacks",
"Resource": "*"
}
]
}
※追記: 上記で権限たりないことがあり、その際はIAMのActionに「”cloudformation:GetTemplate”」を追加することで解決しました。
まとめ
「cdk diff」に必要なIAM権限調べてみました。
「AWSCloudFormationReadOnlyAccess」くらい割当ないとだめかと思っていましたが、「DescribeStacks」だけで可能だったみたいです。
GithubActionsとかで、PR時に「cdk diff」だけ実行したいときなどに役立つかと思います。
CDK「Export <アウトプット> cannot be deleted as it is in use by <スタック名>」こんにちは、ちゃりおです。
CDKの自動で追加されるクロススタック参照で以下のエラーがでました。
Export cannot be...
Github Actionsを使ってCDKを自動デプロイするこんにちは、ちゃりおです。
CDK手動反映だと反映漏れが発生することもあり、今回はGithub Actionsを使ってCDKを自動デプ...