メインコンテンツまでスキップ
Sumo Logic Japanese

CloudFormation による AWS Source の設定

AWS CloudFormation を使用すると、AWS インフラストラクチャを作成または設定しなくても AWS 製品を活用できます。AWS CloudFormation を使用して、すべてのリソースと依存関係をテンプレート ファイルで宣言します。テンプレートは、リソースの集合をスタックと呼ばれる 1 つの単位として定義します。AWS CloudFormation は、スタックのすべてのメンバー リソースをまとめて作成および削除し、リソース間のすべての依存関係を管理します。

AWS CloudFormation の詳細については、AWS CloudFormation 製品ページを参照してください。

SNS サブスクリプション エンドポイントのセットアップ

SNS サブスクリプションをセットアップするには、AWS コマンド ライン インターフェイス (CLI) を使用するか、AWS CloudFormation コンソールでスタックを作成します。

  1. どちらの方法でもテンプレートを使用した YAML ファイルが必要です。提供される YAML テンプレートを使用してファイルを作成するか、Sumo インターフェイスからテンプレートをダウンロードできます。Source を作成するときに [Create URL (URL を作成)] をクリックすると、[Generate event-based polling template (イベント ベースのポーリング テンプレートを生成)] ボタンが使用可能になります。
    generate cloudformation template event subscription.png
AWS CloudFormation コンソールでのスタックの作成
  1. [Services (サービス)] > [CloudFormation] > [Create Stack (スタックを作成)] > [Upload a template to Amazon S3 (テンプレートを Amazon S3 にアップロードする)] の順にクリックし、ファイルを CloudFormation テンプレートとともにアップロードして [Next (次へ)] をクリックします。詳細は、「スタックテンプレートの選択」を参照してください。
    upload template when creating cloudformation stack.png

  2. 詳細情報を指定します。Sumo で Source を作成したときに取得した適切なスタック名、S3 バケット名、およびエンドポイント URL を入力し、[Next (次へ)] をクリックします。詳細は、「スタック名とパラメーターを指定します。」を参照してください。

    specify details.png
  3. オプションはデフォルトのままにすることができます。再度、[Next (次へ)] をクリックします。間違いがないことを確認したら、[Create (作成)] をクリックします。

  4. [Services (サービス)] > [S3] に移動して、通知を添付するバケットを選択します。[Properties (プロパティ)] > [Events (イベント)] > [Add Notification (通知の追加)] に移動します。[Name (名前)] にイベント通知の名前を入力します。[Events (イベント)] セクションで、[All object create events (すべてのオブジェクトがイベントを作成)] を選択します。[Send to (送信先)] セクション (通知の宛先) で、[SNS Topic (SNS トピック)] を選択します。[SNS] セクションが利用可能になります。ドロップダウンから、手順 5 で AWS によって作成されたトピックの名前を選択します。名前の書式は、SumoSNSTopic-<AWS::StackName> です。[Save (保存)] をクリックします。

AWS コマンド ライン インターフェイス (CLI) の使用
  1. 次の AWS CLI コマンドを実行してスタックを作成します。詳細については、create-stack の AWS コマンド ライン リファレンスを参照してください。
    パラメーターごとに bucketName および sumoLogicSourceUrlParameterValue プレースホルダを置き換えます。

$ aws cloudformation create-stack --stack-name sumo-sns --template-body file://./sumo-sns-cf.txt --parameter ParameterKey="bucketName",ParameterValue="bucketName" ParameterKey="sumoLogicSourceUrl",ParameterValue="sumoLogicSourceUrl"

  1. トピックが AWS によって作成され、次の形式に基づいて名前が付けられます。

SumoSNSTopic-<AWS::StackName>

トピックと SNS サブスクリプションを作成するための YAML テンプレート

AWSTemplateFormatVersion: "2010-09-09"
Description: "A template to create a topic and a subscription with the endpoint of the Sumo Logic source"
Parameters:
 bucketName:
   Description: "The name of the bucket on which you want to configure your notification eg. myBucket"
   Type: String
 sumoLogicSourceUrl:
   Description: "The endpoint URL that you obtained from the S3 source created with Sumo Logic eg. https://sumo-endpoint-events.sumolog...r/v1/event/xyz"
   Type: String
Resources:
 sumoSNSTopic:
   Properties:
     TopicName: !Sub "SumoSNSTopic-${AWS::StackName}"
   Type: "AWS::SNS::Topic"

 sumoSNSSubcscription:
   Properties:
     TopicArn:
       Ref: sumoSNSTopic
     Endpoint:
       Ref: sumoLogicSourceUrl
     Protocol: https
     DeliveryPolicy:
       healthyRetryPolicy:
         numRetries: 40
         minDelayTarget: 10
         maxDelayTarget: 300
         numMinDelayRetries: 3
         numMaxDelayRetries: 5
         numNoDelayRetries: 0
         backoffFunction: exponential
   Type: "AWS::SNS::Subscription"

 sumoSNSpolicy:
   Properties:
     PolicyDocument:
       Id: SumoTopicPolicy
       Statement:
         -
           Action: "sns:Publish"
           Condition:
             StringEquals:
               aws:SourceAccount: !Ref "AWS::AccountId"
             ArnLike:
               aws:SourceArn: !Join ['', ['arn:aws:s3:*:*:', Ref: bucketName]]
           Effect: Allow
           Principal:
             AWS: "*"
           Resource:
             Ref: sumoSNSTopic
     Topics:
       -
         Ref: sumoSNSTopic
   Type: "AWS::SNS::TopicPolicy"

IAM ロールのセットアップ

CloudFormation を使用することで、IAM ロールをもつ AWS 製品に Sumo Logic のアクセス権を付与できます。AWS コマンド ライン インターフェイス (CLI) を使用するか、AWS CloudFormation コンソールでスタックを作成することができます。

  1. どちらの方法でも CloudFormation テンプレートを使用した YAML ファイルが必要です。提供された YAML テンプレートを使用してファイルを作成するか、または Source を作成するときにテンプレートを生成して Sumo インターフェイスからダウンロードするには、[Generate role-based access template (ロール ベースのアクセス テンプレートの生成)] ボタンをクリックします。ボタンはバケット名を入力した後にのみ利用可能になります。

iam role generate cloudformation template in UI.png

AWS コマンド ライン インターフェイス (CLI) の使用
  1. 次の AWS CLI コマンドを実行してスタックを作成します。詳細については、create-stack の AWS コマンド ライン リファレンスを参照してください。

$ aws cloudformation create-stack --stack-name sumo-role --template-body file://./role-s3bucket --capabilities CAPABILITY_IAM

  1. ロールが AWS によって作成され、次の形式に基づいて名前が付けられます。

<stack_name>-SumoRole-<random_characters>

  1. ロールの ARN を Sumo にコピーします。
AWS CloudFormation コンソールでのスタックの作成
  1. [Services (サービス)] > [CloudFormation] > [Create Stack (スタックを作成)] > [Upload a template to Amazon S3 (テンプレートを Amazon S3 にアップロードする)] の順にクリックし、ファイルを CloudFormation テンプレートとともにアップロードして [Next (次へ)] をクリックします。詳細は、「スタックテンプレートの選択」を参照してください。
    upload template when creating cloudformation stack.png

  1. 詳細情報を指定します。適切なスタック名を [Stack Name (スタック名)] に入力します。[Next (次へ)] をクリックします。詳細は、「スタック名とパラメーターを指定します。」を参照してください。

    specify details no params.png
  2. オプションはデフォルトのままにすることができます。再度、[Next (次へ)] をクリックします。[I acknowledge that AWS CloudFormation might create IAM resources. (AWS CloudFormation が IAM リソースを作成する場合があることを了承します。)] というボックスを確認してオンにし、[Create (作成)] をクリックします。

  3. ロールが AWS によって作成され、次の形式に基づいて名前が付けられます。

    <stack_name>-SumoRole-<random_characters>

  4. ロールの ARN を Sumo にコピーします。

IAM ロールをセットアップする YAML テンプレート

AWSTemplateFormatVersion: '2010-09-09'
Description: A CloudFormation template that creates a role for authenticating with
  Sumo’s AWS integrations.
Parameters:
  ExternalID:
    Type: String
    Description: An ID used in the trust policy to designate who can assume the role, formatted as deployment:accountId. Eg. us1:0000000000000131
  Actions:
    Type: CommaDelimitedList
    Description: Comma separated list of permissive AWS actions granted to the role. Eg. s3:GetObject,s3:GetObjectVersion,s3:ListBucketVersions,s3:ListBucket
  Resources:
    Type: CommaDelimitedList
    Description: Comma separated ARNs of the AWS resources that the role will have access to. Eg. arn:aws:s3:::mybucket
Resources:
  SumoRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            AWS: arn:aws:iam::926226587429:root
          Action: sts:AssumeRole
          Condition:
            StringEquals:
              sts:ExternalId:
                Ref: ExternalID
      Path: "/"
      Policies:
      - PolicyName: SumoPolicy
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
          - Effect: Allow
            Action:
              Ref: Actions
            Resource:
              Ref: Resources

  • この記事は役に立ちましたか?