Setup
IAM Role: AgentSpace
# Create Role
cat > trust-policy.json << 'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "aidevops.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "<ACCOUNT_ID>"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:aidevops:<REGION>:<ACCOUNT_ID>:agentspace/*"
}
}
}
]
}
EOF
aws iam create-role \
--role-name DevOpsAgentRole-AgentSpace \
--assume-role-policy-document file://trust-policy.json
# Get Role ARN
aws iam get-role --role-name DevOpsAgentRole-AgentSpace --query 'Role.Arn' --output text
# Attach Managed Policy
aws iam attach-role-policy \
--role-name DevOpsAgentRole-AgentSpace \
--policy-arn arn:aws:iam::aws:policy/AIDevOpsAgentAccessPolicy
# Attach Inline Policy
cat > inline-policy.json << 'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateServiceLinkedRoles",
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": [
"arn:aws:iam::<ACCOUNT_ID>:role/aws-service-role/resource-explorer-2.amazonaws.com/AWSServiceRoleForResourceExplorer"
]
}
]
}
EOF
aws iam put-role-policy \
--role-name DevOpsAgentRole-AgentSpace \
--policy-name AllowCreateServiceLinkedRoles \
--policy-document file://inline-policy.json
IAM Role: WebApp (Operator)
- This role grants to the
WebApp access to this AgentSpace
# Create role
cat > trust-policy.json << 'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "aidevops.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
],
"Condition": {
"StringEquals": {
"aws:SourceAccount": "<ACCOUNT_ID>"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:aidevops:<REGION>:<ACCOUNT_ID>:agentspace/*"
}
}
}
]
}
EOF
aws iam create-role \
--role-name DevOpsAgentRole-WebappAdmin \
--assume-role-policy-document file://trust-policy.json
# Get Role ARN
aws iam get-role --role-name DevOpsAgentRole-WebappAdmin --query 'Role.Arn' --output text
# Attach managed policy
aws iam attach-role-policy \
--role-name DevOpsAgentRole-WebappAdmin \
--policy-arn arn:aws:iam::aws:policy/AIDevOpsOperatorAppAccessPolicy
Create AgentSpace
aws devops-agent create-agent-space \
--name "MyAgentSpace" \
--description "AgentSpace for monitoring my application"
aws devops-agent list-agent-spaces
- On the first setup on an account, your user role will need you will permissions to
- This is done via
aws iam create-service-linked-role --aws-service-name aidevops.amazonaws.com and it's executed automatically when creating the first agent space on that account
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"aidevops:*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "arn:aws:iam::*:role/aws-service-role/aidevops.amazonaws.com/AWSServiceRoleForAIDevOps"
}
]
}
Associate Services
# Associate with the built-in service "Aws" (an AWS Account)
aws devops-agent associate-service \
--agent-space-id MyAgentSpace \
--service-id aws \
--configuration '{
"aws": {
"assumableRoleArn": "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace",
"accountId": "<MONITORING_ACCOUNT_ID>",
"accountType": "monitor"
}
}'
Enable Operator App
aws devops-agent enable-operator-app \
--agent-space-id MyAgentSpace \
--auth-flow iam \
--operator-app-role-arn "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin"