web-dev-qa-db-ja.com

AWSはCloudFormationでSESをサポートしていますか?

CloudFormationを使用して、AWSでいくつかのクラウドリソースの作成を自動化する方法を見つけようとしています。

ここで、SES(Simple Email Service)ドメインの作成を含める必要がありますが、ドキュメントが見つかりませんでしたが、すでに確認しました。

AWSはCloudFormationでSESをサポートしていますか?

9

残念ながら、これは現在サポートされていませんが、Re:Invent 2017が間近に迫っていることを誰が知っていますか、、、

AWS開発者フォーラムで質問

カスタム関数を作成することで可能になります。 blog SESとクラウドフォーメーションについて。

7
jarnohenneman

CloudFormationはいくつかの組み込み Amazon SESリソースタイプ を提供しますが、2020年の時点では、多くの人が必要とするものがまだありません:domainおよびメール検証

幸い、CloudFormationには、独自の カスタムリソースタイプ を定義する機能があります。他のCloudFormationリソースとうまく連携するように設計されたCustom::SES_DomainおよびCustom::SES_EmailIdentityリソースを構築しました。ここで入手してください: https://github.com/medmunds/aws-cfn-ses-domain

カスタム CfnSESResources をテンプレートに取り込んだら、次のようにSESドメインを確認できます。

Resources:
  # Provision a domain with Amazon SES:
  MySESDomain:
    Type: Custom::SES_Domain
    Properties:
      ServiceToken: !GetAtt CfnSESResources.Outputs.CustomDomainIdentityArn
      Domain: "example.com"
      EnableSend: true
      EnableReceive: false

  # Then add all required DNS records for SES verification and usage:
  MyRoute53RecordsForSES:
    Type: AWS::Route53::RecordSetGroup
    Properties:
      HostedZoneName: "example.com."
      RecordSets: !GetAtt MySESDomain.Route53RecordSets

完全な手順はリポジトリにあります。 Custom::SES_Domainには、いくつかの一般的なSESドメインオプションを制御するための properties があり、CloudFormation DNSリソースにフィードする attributes を公開します:標準のAWS::Route53::RecordSetGroupリソースとして上に示した、またはゾーンファイルエントリを介した他の(外部)DNSプロバイダー。

3
medmunds

AWS Cloudformationは現在サポートされていませんが、AWS SDK(例: Node SDK )を使用して必要なSESリソースをプロビジョニングします。

AWSSDKおよびAWSCLIコマンドとCloudFormationを組み合わせてカスタムコードを使用してリソースAWSをプロビジョニングするのが一般的な方法です。これは、各アプローチがパラメーター、リソースの数、繰り返しなどに基づいて利点になる可能性があるためです。

2
Ashan

これが現在のリストです CloudFormationでサポートされているSESリソースタイプ

AWS :: SES :: ConfigurationSet

AWS :: SES :: ConfigurationSetEventDestination

AWS :: SES :: ReceiptFilter

AWS :: SES :: ReceiptRule

AWS :: SES :: ReceiptRuleSet

AWS :: SES :: Template

0
Pat Myron

サポートされていません。ただし、ラムダで処理することはできます。

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: >-
  A simple email example
Resources:
  FunctionEmailHandler:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: email.handler
      Runtime: nodejs6.10
      CodeUri: ..
      Description: >-
        ...
      Tags:
        App: your app
      MemorySize: 128
      Timeout: 10    
      Policies:
        - Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - 's3:GetObject'
              Resource: '*'

  LambdaInvokePermission:
    Type: "AWS::Lambda::Permission"
    Properties:
      Action: 'lambda:InvokeFunction'
      FunctionName: !GetAtt FunctionEmailHandler.Arn
      Principal: ses.amazonaws.com

  SESEmailRecievedRule:
    Type: "AWS::SES::ReceiptRule"
    Properties:
      RuleSetName: your default rule set name
      After: store-email-to-s3
      Rule:
        Name: email-recieved-rule
        Enabled: true
        Actions:
          - LambdaAction:
              FunctionArn: !GetAtt FunctionEmailHandler.Arn
              InvocationType: Event
0
hojin