初めに
AWS CDKを利用しAmplifyのアプリケーションを作成した際に
ソースコードのビルドでAccessDeniedExceptionが発生し、ビルドに失敗する事がありました。
権限を追加するだけなのですが、自動で権限設定をしてくれず、あれ?と思ったため
対処法をメモしておきたいと思います。
エラー内容
エラー内容は抜粋していますが、以下のようなエラーです。
Amplify AppID: hoge not found. Please ensure your local profile matches the AWS account or region in which the Amplify app exists.
AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/[role]/BuildSession is not authorized to perform: amplify:GetApp on resource: [arn]
エラーの原因と解決法
以下のように指定しており、roleパラメータはDefault: - a new role is created
と記載されていていたため、指定していませんでした。
amplify_app = amplify.App(
self, 'amplify-app',
app_name=app_name,
source_code_provider=source_code_provider,
basic_auth=basic_auth
)
結論としては権限が足りないので自分でroleを追加してあげることで対応できます。
role = iam.Role(
self, 'amplify-app-role',
assumed_by=iam.ServicePrincipal('amplify.amazonaws.com'),
managed_policies=[iam.ManagedPolicy.from_aws_managed_policy_name('AdministratorAccess-Amplify')]
)
amplify_app = amplify.App(
self, 'amplify-app',
app_name=app_name,
source_code_provider=source_code_provider,
basic_auth=basic_auth,
role=role
)
以上です。
roleの設定はほぼ必須?ということがわかりました。