■CodeBuild用Role作成

cmd
cd ~/environment
cat << EOF > assume-role-policy-document.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "codebuild.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
aws iam create-role \
--role-name ContainerHandsOnForCodeBuild \
--assume-role-policy-document file://assume-role-policy-document.json
result
{
"Role": {
"Path": "/",
"RoleName": "ContainerHandsOnForCodeBuild",
"RoleId": "AROASHENIAIFI52SKC5CK",
"Arn": "arn:aws:iam::123456789012:role/ContainerHandsOnForCodeBuild",
"CreateDate": "2022-09-15T12:17:11Z",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "codebuild.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
}
}
■CodeBuild用RoleにPolicyをアタッチ
cmd
aws iam attach-role-policy \
--role-name ContainerHandsOnForCodeBuild \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser
result
cmd
aws iam attach-role-policy \
--role-name ContainerHandsOnForCodeBuild \
--policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
result
cmd
aws iam attach-role-policy \
--role-name ContainerHandsOnForCodeBuild \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
result
cmd
aws iam list-attached-role-policies \
--role-name ContainerHandsOnForCodeBuild
result
{
"AttachedPolicies": [
{
"PolicyName": "AmazonEC2ContainerRegistryPowerUser",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser"
},
{
"PolicyName": "CloudWatchLogsFullAccess",
"PolicyArn": "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
},
{
"PolicyName": "AmazonS3FullAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonS3FullAccess"
}
]
}
■CodeBuild設定

cmd
cd ~/environment
cat << EOF > codebuild-create-project.json
{
"name": "ContainerHandsOn",
"source": {
"type": "CODECOMMIT",
"location": "https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/ContainerHandsOn"
},
"sourceVersion": "refs/heads/master",
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER",
"image": "aws/codebuild/amazonlinux2-x86_64-standard:4.0",
"computeType": "BUILD_GENERAL1_SMALL",
"privilegedMode": true
},
"serviceRole": "arn:aws:iam::${AccountID}:role/ContainerHandsOnForCodeBuild"
}
EOF
result
■CodeBuild作成
cmd
aws codebuild create-project \
--cli-input-json file://codebuild-create-project.json \
--tags key=Name,value=ContainerHandsOn
result
{
"project": {
"name": "ContainerHandsOn",
"arn": "arn:aws:codebuild:ap-northeast-1:123456789012:project/ContainerHandsOn",
"source": {
"type": "CODECOMMIT",
"location": "https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/ContainerHandsOn",
"insecureSsl": false
},
"sourceVersion": "refs/heads/master",
"artifacts": {
"type": "NO_ARTIFACTS"
},
"cache": {
"type": "NO_CACHE"
},
"environment": {
"type": "LINUX_CONTAINER",
"image": "aws/codebuild/amazonlinux2-x86_64-standard:4.0",
"computeType": "BUILD_GENERAL1_SMALL",
"environmentVariables": [],
"privilegedMode": true,
"imagePullCredentialsType": "CODEBUILD"
},
"serviceRole": "arn:aws:iam::123456789012:role/ContainerHandsOnForCodeBuild",
"timeoutInMinutes": 60,
"queuedTimeoutInMinutes": 480,
"encryptionKey": "arn:aws:kms:ap-northeast-1:123456789012:alias/aws/s3",
"tags": [
{
"key": "Name",
"value": "ContainerHandsOn"
}
],
"created": 1663244295.293,
"lastModified": 1663244295.293,
"badge": {
"badgeEnabled": false
},
"projectVisibility": "PRIVATE"
}
}