$30 off During Our Annual Pro Sale. View Details »

AWS Lambdaで複数アカウント間でアレコレする / Gunosy Beer Bash #7

koid
July 27, 2016

AWS Lambdaで複数アカウント間でアレコレする / Gunosy Beer Bash #7

koid

July 27, 2016
Tweet

More Decks by koid

Other Decks in Technology

Transcript

  1. AWS Lambdaで
    複数アカウント間でアレコレする
    株式会社Gunosy
    ⼩出 幸典

    View Slide

  2. ⾃⼰紹介
    •  名前
    –  ⼩出 幸典 (こいで ゆきのり)
    •  所属
    –  株式会社Gunosy 開発本部
    •  プロビジョニング・デプロイフローの共通化とか
    •  過剰リソース警察、コスト削減おじさん
    •  好きなAWSサービス
    –  OpsWorks, Lambda, Trusted Advisor

    View Slide

  3. はじめに - AWS Lambdaとは
    •  コードをアップロードするとイベントに応じて実⾏
    •  サーバのプロビジョニング・管理が不要
    •  AWSの⾊々なサービスと連携可能

    View Slide

  4. AWS Lambdaのユースケース@Gunosy
    データ同期
    APIバックエンド
    所謂普通のバッチ
    Amazon
    RDS
    Amazon
    Elasticsearch
    Service
    Amazon
    EMR
    Amazon
    Kinesis
    Amazon
    Cognito
    Amazon API
    Gateway
    AWS
    Lambda
    AWS
    Lambda
    AWS
    Lambda
    監視・管理
    Amazon
    CloudWatch
    Amazon
    SNS
    AWS
    Lambda
    AWS
    OpsWorks
    AWS
    Lambda

    View Slide

  5. AWS Lambdaのユースケース@Gunosy
    監視・管理
    データ同期
    APIバックエンド
    所謂普通のバッチ
    Amazon
    Elasticsearch
    Service
    Amazon
    EMR
    Amazon
    Kinesis
    Amazon
    Cognito
    Amazon
    CloudWatch
    Amazon
    SNS
    Amazon API
    Gateway
    AWS
    Lambda
    AWS
    Lambda
    AWS
    Lambda
    AWS
    OpsWorks
    AWS
    Lambda
    Amazon
    RDS
    AWS
    Lambda

    View Slide

  6. 本⽇お話させていただく内容
    •  Gunosyでは複数のAWSアカウントを利⽤しています
    –  ざっくり⾔うと事業・サービス別

    View Slide

  7. 本⽇お話させていただく内容
    •  事業・サービス別にAWSアカウントを分けていくと…
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing

    View Slide

  8. 本⽇お話させていただく内容
    •  事業・サービス別にAWSアカウントを分けていくと…
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    監視・運⽤
    管理統制
    監視・運⽤
    管理統制
    監視・運⽤
    管理統制

    View Slide

  9. 本⽇お話させていただく内容
    •  事業・サービス別にAWSアカウントを分けていくと…
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    Amazon
    CloudWatch
    Amazon
    ElastiCache
    Amazon
    RDS
    Amazon
    Redshift
    Amazon
    EC2
    Elastic Load
    Balancing
    監視・運⽤
    管理統制
    監視・運⽤
    管理統制
    監視・運⽤
    管理統制
    とても煩雑

    View Slide

  10. 本⽇お話させていただく内容
    •  どうにかして省⼒化したい
    –  おそらく今後もアカウントは増える
    –  アカウント新規作成時の初期設定は⼿間
    –  運⽤ツール類を共通化しても更新を反映するのも⼿間

    View Slide

  11. 本⽇お話させていただく内容
    どうしよう

    View Slide

  12. そうだこうしよう
    •  個別に作るのはやめよう
    Service Account 1 Service Account 2 Service Account 3
    Monitoring Account
    監視・運⽤
    管理統制

    View Slide

  13. ポイントは2つ
    1. 別のアカウントに存在するLambdaのInvoke
    2. Lambdaから別アカウントのリソースへのアクセス

    View Slide

  14. 例1)別のアカウントに存在するLambdaのInvoke
    •  CloudWatch Alarmの通知
    Service Account
    Amazon
    CloudWatch
    Monitoring Account
    Amazon
    SNS
    AWS
    Lambda
    ①Publish
    ②Invoke
    サービスアカウント
    からのPublishを許可
    Alarm中のAccountID
    を⾒て通知先を振り分け

    View Slide

  15. 例1)別のアカウントに存在するLambdaのInvoke
    •  SNSのTopicを監視アカウントに置く場合
    –  SNSのTopic PolicyにてサービスアカウントからのPublishを許可
    •  SNSのTopicをサービスアカウントに置く場合
    –  SNSのTopic Policyにて監視アカウントからのアクセス(※)を許可
    •  ※ LambdaSubscribe, ListSubscriptionsByTopic, Receive
    –  Lambda Fuctionにて、サービスアカウントからのInvokeを許可

    View Slide

  16. 例2)Lambdaから別アカウントのリソースへのアクセス
    •  リソースのルール確認(AWS Config的な)
    Service Account Monitoring Account
    Amazon
    SNS
    AWS
    Lambda
    ③Publish
    Amazon
    RDS
    Amazon
    ElastiCache
    Amazon
    Redshift
    AWS STS
    Report
    ①AssumeRole
    ②Describe

    View Slide

  17. 例2)Lambdaから別アカウントのリソースへのアクセス
    •  プロビジョニングのチェック
    Service Account Monitoring Account
    AWS
    Lambda
    ③Invoke
    ①AssumeRole
    ②Describe
    AWS
    Lambda
    AWS
    OpsWorks
    Amazon
    EC2
    AWS STS
    ④AssumeRole
    ⑤Setup

    View Slide

  18. 例2)Lambdaから別アカウントのリソースへのアクセス
    •  サービスアカウント側にて、監視⽤ロールを発⾏
    –  監視アカウントに対しAssumeRoleを許可
    •  監視アカウント側にて、Lambda⽤ロールを発⾏
    –  監視⽤ロールへのAssumeRoleを許可
    Service Account Monitoring Account
    AWS IAM
    Monitoring
    role
    AWS IAM
    Lambda
    role
    AssumeRole
    を許可
    AssumeRole
    を許可

    View Slide

  19. まとめ
    AWS Lambda + クロスアカウントで
    効率的な監視・管理を!

    View Slide

  20. 終わりに
    •  ご清聴ありがとうございました

    View Slide