modules/terraform-aws-amplify-static-website-deployment-from-s3/iam.tf (31 lines of code) (raw):

data "aws_caller_identity" "current" {} locals { s3_bucket_key = format("arn:aws:s3:::%s/%s/%s", var.aws_s3_bucket_store.bucket_name, trimsuffix(var.aws_s3_bucket_store.bucket_path, "/"), var.aws_s3_bucket_store.zip_file_name) } resource "aws_iam_role_policy" "additional_policy" { name = "additional_policy" role = module.main.iam_role.id policy = data.aws_iam_policy_document.additional_policy.json } data "aws_iam_policy_document" "additional_policy" { statement { sid = "AllowToPullFromSourceS3BucketSpecificArtifact" actions = [ "s3:GetObject" ] resources = [ local.s3_bucket_key ] } statement { sid = "AllowToInitiateAndExecuteManualDeployment" actions = [ "amplify:StartDeployment", "amplify:CreateDeployment" ] resources = [ format("arn:aws:amplify:%s:%s:apps/%s/branches/%s/deployments/start", var.aws_s3_bucket_store.region, data.aws_caller_identity.current.account_id, var.aws_amplify_app.id, var.aws_amplify_app.deployment_name), format("arn:aws:amplify:%s:%s:apps/%s/branches/%s/*", var.aws_s3_bucket_store.region, data.aws_caller_identity.current.account_id, var.aws_amplify_app.id, var.aws_amplify_app.deployment_name) ] } }