Окружающая среда AWS CloudFormation для среды ses

102
6

Я пытаюсь сделать шаблон многократного использования CloudFormation и хотел бы сделать какое-то условное условие, если параметр Environment является "test" (или любой другой средой, отличной от "prod"), затем отправляйте электронные письма SES только на учетные записи gmail (т.е., корпоративные счета), но для "prod" отправьте электронные письма SES в любом месте. Должен ли я выполнять две разные роли и иметь условия для каждого из них? Или есть способ сделать это внутри одной роли ниже? Спасибо за любую помощь!

Parameters: 

Environment:
Description: Environment, which can be "test", "stage", "prod", etc.
Type: String

Resources:

Role:
Type: AWS::IAM::Role
Properties:
RoleName: myRole
Path: /
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
Service:
- "ecs.amazonaws.com"
Action:
- "sts:AssumeRole"
Policies:
-
PolicyName: "ses-policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action:
- "ses:SendEmail"
- "ses:SendRawEmail"
Resource: "*"
Condition:
"ForAllValues:StringLike":
"ses:Recipients":
- "*@gmail.com"

спросил(а) 2021-01-19T15:55:03+03:00 9 месяцев, 1 неделя назад
1
Решение
79

Conditions отлично подходят для добавления этой условной логики в свойства ресурса CloudFormation. В вашем примере вы можете использовать функцию Fn::If Intrinsic, чтобы включить существующее условие политики (не путать с условием CloudFormation!), Если среда не является prod, а AWS::NoValue противном случае (полностью исключая условие политики когда среда prod):

Parameters:
Environment:
Description: Environment, which can be "test", "stage", "prod", etc.
Type: String
AllowedValues: [test, stage, prod]
Conditions:
IsProdEnvironment: !Equals [ !Ref Environment, prod ]
Resources:
Role:
Type: AWS::IAM::Role
Properties:
RoleName: myRole
Path: /
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
Service:
- "ecs.amazonaws.com"
Action:
- "sts:AssumeRole"
Policies:
-
PolicyName: "ses-policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action:
- "ses:SendEmail"
- "ses:SendRawEmail"
Resource: "*"
Condition: !If
- IsProdEnvironment
- !Ref AWS::NoValue
- "ForAllValues:StringLike":
"ses:Recipients":
- "*@gmail.com"

ответил(а) 2021-01-19T15:55:03+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема