如何通过CloudFormation为SES身份添加发送授权策略
解决方案
可以为CloudFormation中定义的SES/Pinpoint邮件身份添加发送授权策略,你当前使用的AWS::PinpointEmail::Identity资源本身没有内置授权策略的配置属性,需要搭配独立的身份策略资源实现,和控制台操作的效果完全一致。
具体实现方式
Amazon Pinpoint Email的邮件身份底层复用SES的身份权限体系,你可以直接使用AWS::SES::IdentityPolicy资源给已创建的Pinpoint邮件身份挂载发送授权策略,不需要替换原有身份资源。
修改后的模板示例如下:
Resources: userEmailIdentity: Type: AWS::PinpointEmail::Identity Properties: Name: !Ref EmailAddress # 发送授权策略 userEmailSendPolicy: Type: AWS::SES::IdentityPolicy Properties: Identity: !Ref userEmailIdentity PolicyName: CrossAccountSendAccess # 自定义策略名称 Policy: Version: "2012-10-17" Statement: - Effect: Allow Principal: # 替换为你需要授权的主体,支持其他AWS账户ID、IAM角色/用户ARN AWS: "arn:aws:iam::123456789012:role/AllowedSendRole" Action: - "ses:SendEmail" - "ses:SendRawEmail" - "ses:SendTemplatedEmail" Resource: !Sub "arn:aws:ses:${AWS::Region}:${AWS::AccountId}:identity/${EmailAddress}" # 可选:添加条件做更细粒度的权限限制 # Condition: # StringEquals: # ses:FromAddress: !Ref EmailAddress
补充说明
- 如果你后续不需要使用Pinpoint Email的专属能力,也可以将原有
AWS::PinpointEmail::Identity替换为SES原生的AWS::SES::EmailIdentity(v2版本)或AWS::SES::Identity(v1版本)资源,授权策略的配置逻辑完全相同。 - 策略中
Principal字段需要根据实际授权场景填写:如果是跨账户授权,填写对方账户根用户ARN即可;如果是同账户内授权给指定服务/角色,填写对应角色的ARN即可。 - 授权策略生效后,被授权主体不需要单独验证该邮件身份,即可按照策略定义的权限使用该身份发信。
内容的提问来源于stack exchange,提问作者neptune
相关产品推荐
相关产品推荐

