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

F4ab9a845cd932f7aa97bdb634d74d77?s=47 koid
July 27, 2016

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

F4ab9a845cd932f7aa97bdb634d74d77?s=128

koid

July 27, 2016
Tweet

Transcript

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

  2. ⾃⼰紹介 •  名前 –  ⼩出 幸典 (こいで ゆきのり) •  所属

    –  株式会社Gunosy 開発本部 •  プロビジョニング・デプロイフローの共通化とか •  過剰リソース警察、コスト削減おじさん •  好きなAWSサービス –  OpsWorks, Lambda, Trusted Advisor
  3. はじめに - AWS Lambdaとは •  コードをアップロードするとイベントに応じて実⾏ •  サーバのプロビジョニング・管理が不要 •  AWSの⾊々なサービスと連携可能

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

  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
  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 監視・運⽤ 管理統制 監視・運⽤ 管理統制 監視・運⽤ 管理統制
  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 監視・運⽤ 管理統制 監視・運⽤ 管理統制 監視・運⽤ 管理統制 とても煩雑
  10. 本⽇お話させていただく内容 •  どうにかして省⼒化したい –  おそらく今後もアカウントは増える –  アカウント新規作成時の初期設定は⼿間 –  運⽤ツール類を共通化しても更新を反映するのも⼿間

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

  12. そうだこうしよう •  個別に作るのはやめよう Service Account 1 Service Account 2 Service

    Account 3 Monitoring Account 監視・運⽤ 管理統制
  13. ポイントは2つ 1. 別のアカウントに存在するLambdaのInvoke 2. Lambdaから別アカウントのリソースへのアクセス

  14. 例1)別のアカウントに存在するLambdaのInvoke •  CloudWatch Alarmの通知 Service Account Amazon CloudWatch Monitoring Account

    Amazon SNS AWS Lambda ①Publish ②Invoke サービスアカウント からのPublishを許可 Alarm中のAccountID を⾒て通知先を振り分け
  15. 例1)別のアカウントに存在するLambdaのInvoke •  SNSのTopicを監視アカウントに置く場合 –  SNSのTopic PolicyにてサービスアカウントからのPublishを許可 •  SNSのTopicをサービスアカウントに置く場合 –  SNSのTopic

    Policyにて監視アカウントからのアクセス(※)を許可 •  ※ LambdaSubscribe, ListSubscriptionsByTopic, Receive –  Lambda Fuctionにて、サービスアカウントからのInvokeを許可
  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
  17. 例2)Lambdaから別アカウントのリソースへのアクセス •  プロビジョニングのチェック Service Account Monitoring Account AWS Lambda ③Invoke

    ①AssumeRole ②Describe AWS Lambda AWS OpsWorks Amazon EC2 AWS STS ④AssumeRole ⑤Setup
  18. 例2)Lambdaから別アカウントのリソースへのアクセス •  サービスアカウント側にて、監視⽤ロールを発⾏ –  監視アカウントに対しAssumeRoleを許可 •  監視アカウント側にて、Lambda⽤ロールを発⾏ –  監視⽤ロールへのAssumeRoleを許可 Service

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

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