NuxtをCodePipeline, CodeBuild, ECR, ElasticBeanstalkを使ってデプロイする

NuxtをCodePipeline, CodeBuild, ECR, ElasticBeanstalkを使ってデプロイする:


CodeBuildサービスロール

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Resource": [ 
                "arn:aws:logs:ap-northeast-1:029792315346:log-group:/aws/codebuild/residential_map_api", 
                "arn:aws:logs:ap-northeast-1:029792315346:log-group:/aws/codebuild/residential_map_api:*" 
            ], 
            "Action": [ 
                "logs:CreateLogGroup", 
                "logs:CreateLogStream", 
                "logs:PutLogEvents" 
            ] 
        }, 
        { 
            "Effect": "Allow", 
            "Resource": [ 
                "arn:aws:s3:::codepipeline-ap-northeast-1-*" 
            ], 
            "Action": [ 
                "s3:PutObject", 
                "s3:GetObject", 
                "s3:GetObjectVersion" 
            ] 
        } 
    ] 
} 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "ec2:CreateNetworkInterface", 
                "ec2:DescribeDhcpOptions", 
                "ec2:DescribeNetworkInterfaces", 
                "ec2:DeleteNetworkInterface", 
                "ec2:DescribeSubnets", 
                "ec2:DescribeSecurityGroups", 
                "ec2:DescribeVpcs" 
            ], 
            "Resource": "*" 
        }, 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "ec2:CreateNetworkInterfacePermission" 
            ], 
            "Resource": "arn:aws:ec2:ap-northeast-1:029792315346:network-interface/*", 
            "Condition": { 
                "StringEquals": { 
                    "ec2:Subnet": [ 
                        "arn:aws:ec2:ap-northeast-1:029792315346:subnet/subnet-0d3a1e6cba8b88498" 
                    ], 
                    "ec2:AuthorizedService": "codebuild.amazonaws.com" 
                } 
            } 
        } 
    ] 
} 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Resource": [ 
                "arn:aws:logs:ap-northeast-1:029792315346:log-group:/aws/codebuild/residential_map_web", 
                "arn:aws:logs:ap-northeast-1:029792315346:log-group:/aws/codebuild/residential_map_web:*" 
            ], 
            "Action": [ 
                "logs:CreateLogGroup", 
                "logs:CreateLogStream", 
                "logs:PutLogEvents" 
            ] 
        }, 
        { 
            "Effect": "Allow", 
            "Resource": [ 
                "arn:aws:s3:::codepipeline-ap-northeast-1-*" 
            ], 
            "Action": [ 
                "s3:PutObject", 
                "s3:GetObject", 
                "s3:GetObjectVersion" 
            ] 
        } 
    ] 
} 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Sid": "VisualEditor0", 
            "Effect": "Allow", 
            "Action": [ 
                "opsworks:DescribeStacks", 
                "logs:*", 
                "s3:CreateBucket", 
                "s3:ListBucket", 
                "lambda:GetFunctionConfiguration", 
                "ecr:UploadLayerPart", 
                "ecr:BatchDeleteImage", 
                "ecr:ListImages", 
                "s3:GetBucketPolicy", 
                "codecommit:ListRepositories", 
                "codedeploy:ListApplications", 
                "ecr:DeleteRepository", 
                "iam:PassRole", 
                "elasticbeanstalk:DescribeEnvironments", 
                "opsworks:DescribeLayers", 
                "ecr:CompleteLayerUpload", 
                "elasticbeanstalk:DescribeApplications", 
                "ecr:DescribeRepositories", 
                "codedeploy:GetApplication", 
                "ecr:DeleteRepositoryPolicy", 
                "ecr:BatchCheckLayerAvailability", 
                "codedeploy:GetDeploymentGroup", 
                "codecommit:ListBranches", 
                "lambda:ListFunctions", 
                "ecr:CreateRepository", 
                "ecr:GetDownloadUrlForLayer", 
                "iam:ListRoles", 
                "ecr:GetAuthorizationToken", 
                "cloudformation:DescribeStacks", 
                "ecr:PutImage", 
                "s3:GetObject", 
                "s3:ListAllMyBuckets", 
                "codedeploy:ListDeploymentGroups", 
                "ecr:SetRepositoryPolicy", 
                "ecr:BatchGetImage", 
                "ecr:DescribeImages", 
                "s3:PutBucketPolicy", 
                "codepipeline:*", 
                "ecr:InitiateLayerUpload", 
                "opsworks:DescribeApps", 
                "cloudformation:ListChangeSets", 
                "ecr:GetRepositoryPolicy" 
            ], 
            "Resource": "*" 
        } 
    ] 
} 


CodePipelineサービスロール

{ 
    "Statement": [ 
        { 
            "Action": [ 
                "iam:PassRole" 
            ], 
            "Resource": "*", 
            "Effect": "Allow", 
            "Condition": { 
                "StringEqualsIfExists": { 
                    "iam:PassedToService": [ 
                        "cloudformation.amazonaws.com", 
                        "elasticbeanstalk.amazonaws.com", 
                        "ec2.amazonaws.com", 
                        "ecs-tasks.amazonaws.com" 
                    ] 
                } 
            } 
        }, 
        { 
            "Action": [ 
                "codecommit:CancelUploadArchive", 
                "codecommit:GetBranch", 
                "codecommit:GetCommit", 
                "codecommit:GetUploadArchiveStatus", 
                "codecommit:UploadArchive" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Action": [ 
                "codedeploy:CreateDeployment", 
                "codedeploy:GetApplication", 
                "codedeploy:GetApplicationRevision", 
                "codedeploy:GetDeployment", 
                "codedeploy:GetDeploymentConfig", 
                "codedeploy:RegisterApplicationRevision" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Action": [ 
                "elasticbeanstalk:*", 
                "ec2:*", 
                "elasticloadbalancing:*", 
                "autoscaling:*", 
                "cloudwatch:*", 
                "s3:*", 
                "sns:*", 
                "cloudformation:*", 
                "rds:*", 
                "sqs:*", 
                "ecs:*" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Action": [ 
                "lambda:InvokeFunction", 
                "lambda:ListFunctions" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Action": [ 
                "opsworks:CreateDeployment", 
                "opsworks:DescribeApps", 
                "opsworks:DescribeCommands", 
                "opsworks:DescribeDeployments", 
                "opsworks:DescribeInstances", 
                "opsworks:DescribeStacks", 
                "opsworks:UpdateApp", 
                "opsworks:UpdateStack" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Action": [ 
                "cloudformation:CreateStack", 
                "cloudformation:DeleteStack", 
                "cloudformation:DescribeStacks", 
                "cloudformation:UpdateStack", 
                "cloudformation:CreateChangeSet", 
                "cloudformation:DeleteChangeSet", 
                "cloudformation:DescribeChangeSet", 
                "cloudformation:ExecuteChangeSet", 
                "cloudformation:SetStackPolicy", 
                "cloudformation:ValidateTemplate" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Action": [ 
                "codebuild:BatchGetBuilds", 
                "codebuild:StartBuild" 
            ], 
            "Resource": "*", 
            "Effect": "Allow" 
        }, 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "devicefarm:ListProjects", 
                "devicefarm:ListDevicePools", 
                "devicefarm:GetRun", 
                "devicefarm:GetUpload", 
                "devicefarm:CreateUpload", 
                "devicefarm:ScheduleRun" 
            ], 
            "Resource": "*" 
        }, 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "servicecatalog:ListProvisioningArtifacts", 
                "servicecatalog:CreateProvisioningArtifact", 
                "servicecatalog:DescribeProvisioningArtifact", 
                "servicecatalog:DeleteProvisioningArtifact", 
                "servicecatalog:UpdateProduct" 
            ], 
            "Resource": "*" 
        }, 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "cloudformation:ValidateTemplate" 
            ], 
            "Resource": "*" 
        }, 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "ecr:DescribeImages" 
            ], 
            "Resource": "*" 
        } 
    ], 
    "Version": "2012-10-17" 
} 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Action": [ 
                "logs:*" 
            ], 
            "Effect": "Allow", 
            "Resource": "*" 
        } 
    ] 
} 

コメント