AWS Startup ブログ

【週刊 Ask An Expert #40】したい!先週の #AWSLoft で受けた質問10選

スタートアップソリューションアーキテクトの塚田 (@akitsukada) です。

2/5 には、 AWS Nyantech が開催され話題になりました。

当日の様子は Twitter で多くつぶやかれた他(#AWSNyantech タグ)、AWS の Debeloper 向け Web マガジンである builders.flash では AWS Nyantech の誕生秘話、「AWS Nyantech はにゃんで生まれたの?」が掲載されています。ぜひ読んでみてください。

さて、今週は週刊 Ask An Expert 第40回をお届けします。読んでいて「参考になった」「いい内容だ」と思って頂けたら、ハッシュタグ #AWSLoft を付けてシェアしてください!

Ask An Expert とは

皆さん AWS Loft Tokyo はご存知でしょうか。目黒セントラルスクエア17Fにある、AWS を利用中のスタートアップ・デベロッパーのためのコワーキング及びイベントスペースです。その一角に AWS のエキスパート – Solutions Architect (SA) や Cloud Support Engineer (CSE)、時にはサービス開発チームや Customer Success Manager (CSM) – といった中の人に技術的な質問ができる Ask An Expert カウンターがあります。そこでは毎月100件以上にものぼるご相談を来場者の方からお受けしています。

ある日の Ask An Expert – SA の内山と有岡

さて、この連載「週刊 Ask An Expert」では、多くのご相談の中から我々スタートアップソリューションアーキテクトの独断で面白かった質問を毎週 10 個ずつ選び紹介していきます。他の AWS Loft 利用者がどんな質問をしているのか、自分が知らない新しいトピックはないか、Ask An Expert ってどんなところなのか、一緒に見ていきましょう。Let’s ask an expert!

週刊 Ask An Expert #40 (2020/02/03 – 02/07)

この週の対応者は SA: 程・三上・川野・上総・国政・木村・齋藤・市川・小田桐・笹木・森實・飯塚・藤倉・下佐粉・園田と、CSE: 榎本でした。

Q1: データ分析基盤をAWS上に構築するにあたり、データの取り込み元が AWS とオンプレにある。データの取り込みにはどのような方法があるか。開発ベンダとの相談では、SFTPによる方法で検討をしている。

AWS CLI を使った Amazon S3 へのデータアップロード方法、Amazon Kinesis Data Firehose または Amazon Kinesis Data Streams による方法を紹介しました。また、データ分析で必要になる取り込んだデータの前処理について、AWS Glue による方法を紹介。

Q2: AWS AppSync で GraphQL API を設計中。ユーザーによってアクセスできるデータに制限をかけるにはどうすればよいか。たとえば管理者は Read/Write OK、一般ユーザーは Read Only にするなど。

認証に Amazon Cognito User Pools をお使いだったため、一例として User Pool の Group ごとに操作権限を分ける方法をご案内しました。

type Query {
   posts:[Post!]!
   @aws_auth(cognito_groups: ["Bloggers", "Readers"])
}

type Mutation {
   addPost(id:ID!, title:String!):Post!
   @aws_auth(cognito_groups: ["Bloggers"])
}

詳細や他の方法については AppSync のセキュリティに関するドキュメントをご覧ください。

Q3: Amazon Cognito User Pool のパスワードリセット操作時に、User Pool に存在しないメールアドレスを入力してもエラーが返却されない。

PreventUserExistenceErrorsENABLED になっている場合、そのように動作します。LEGACY に設定すれば UserNotFoundException を返させることができますが、該当メールアドレスが存在するかどうかが分かってしまうと攻撃を受けるリスクにつながることを説明し、 ENABLED で運用することをご検討いただくようお願いしました。詳しくはドキュメントをご覧ください。

Q4: 工場に導入した Raspberry Pi の管理に、AWS Systems Manager を使うか AWS IoT を使うか、どうすればよいか。Ras Pi は AWS Direct Connect でつながった社内 IT システムに接続されている。

10台ほどの Ras Pi に Shell Script を配信したいとのことで、まずは Systems Manager(ssm-agent)を試してもらいつつ、AWS IoT で IoT Device Management ができることをご案内しました。

Q5: Application Load Balancer(ALB)Amazon EC2Amazon RDS で設計している Web システムについて、アーキテクチャをレビューしてほしい。

主に以下のような点にフォーカスして議論しました。

  • EC2, RDS ともに Single-AZ になっていますが、可用性を考えるのであれば Multi-AZ で運用することをご検討ください。スペックの調整や Reserved InstanceSpot InstanceAWS Savings Plan などを使ってコストを削減することもできます。
  • RDS のスナップショットはむやみに取っておくのではなく、要件を明確にして、必要な数や世代を決めてください。
  • アクセス数等の負荷が増減するシステムであれば、EC2 のサーバー群には Auto Scaling を設定することで自動的に台数を増減させることができます。
  • サブネットは必要最小限のコンポーネントを露出させるようにして、不要なものはプライベートサブネットに配置させることでセキュリティを向上できます。この場合、 ALB と NAT Gateway はパブリックサブネットに、EC2 と RDS はプライベートサブネットにすることも一般的です。
  • etc

Q6: 踏み台サーバーを構築する際の注意点を教えて欲しい。

EC2 インスタンスで踏み台サーバーを作るのであれば、Security Group でアクセス可能な範囲を絞る、不要な時間帯は停止する、SSH 鍵の管理や VPN 接続の設定など各種アクセス制限をちゃんと検討してください。

また、AWS Systems ManagerSession Manager を使うことができれば、以下のような利点が考えられるのでご検討ください。

Q7: TLS 証明書の更新をし忘れないようにするにはどうすれば…。

Amazon Certificate Manager を使って DNS ベースでの検証を設定しておくことで、更新を自動化することができます。

Q8: 現在 Amazon EC2 + Amazon RDS で Web サイトをホストしているが、コスト削減、可用性、運用の軽減などを目指してサーバーレスにしたい。

Single Page Application(SPA) にして、バックエンドを Amazon API GatewayAmazon DynamoDB で構築する方向性を議論しました。

SPA のホスティングやバックエンドの構築には AWS Amplify が簡単です。

Q9: AWS CDK で NAT Gateway を設定する方法は?

VPC を作るときのパラメータで指定することができます。

    // Configure the `natGatewayProvider` when defining a Vpc
    const natGatewayProvider = ec2.NatProvider.instance({
      instanceType: new ec2.InstanceType('t3.small')
    });

    const vpc = new ec2.Vpc(this, 'MyVpc', {
      natGatewayProvider,

      // The 'natGateways' parameter now controls the number of NAT instances
      natGateways: 2,
    });

詳しくは CDK のドキュメントをご参照ください。

Q10: Amazon EKSAmazon Aurora で構築したシステムの可用性、運用面、セキュリティ等についてレビューしてほしい。

その場で30分ほどお話しつつ、AWS Well-Architected Tool を使って一度ご自身で包括的にチェックしてみていただくことをおすすめ。

週刊 Ask An Expert まとめ、今回はここまで!

最後までお読み頂きありがとうございます。冒頭に書いたように執筆者の独断で興味深かった質問のみをピックアップの上、要約して記載しているので実際にはより具体的な質問をより多く頂いています。まだ Ask An Expert カウンターをご利用されたことがない方も、AWS Loft Tokyo にお越しの際はぜひお気軽にご質問ください。

※Ask An Expert が混雑してお待ちいただく場合、またはエキスパートが不在の場合がございます。何卒ご容赦ください。

Akihiro Tsukadaこのブログの著者
つかだ あきひろ / Startup SA。AWS Amplify が好き。髪の毛は 2 週間ごとにメンテするのが理想。