AWS導入(1)

必要なものを入れる

  • 仮想環境を作ってその中に入れる。

SAMのテンプレートアプリケーション

  • SAM =AWS Serverless Application Model (AWS SAM)のこと
    • AWS CloudFormation (CFn)の拡張らしい。サーバーレス版がSAMになる
    • テンプレートを書くことで同じような環境+実行設定をすることができる
      • テンプレートを用いて作った環境をStackっていう
      • 参考
    • モノ的には、Dockerと似たような感じ!
    •  
  • 何もの?
    • Lambda, API Gateway, DynamoDB のリソースをまとめて管理できる
  • 何がうれしい?
    • CFnと似たようなフォーマットで書くことができる
    • ローカルでも実行可能なので、課金されない

事前にAWSのアカウント設定。

これを参考にした。https://note.com/kuyo/n/n49b56b1448b1
やっていることは

  • IAM(Identify and Access Management)ユーザー生成
    • アクセスキー取得
  • IAMでパスワードポリシー変更
  • IAMでエンドポイント制限
  • MFAの有効化
    • IAMユーザとRootユーザともに仮想MFAデバイスでGoogleAuthenticatorを使うようにする
  • 支払関連
    • 通貨変更(JPY): 正直どっちがいいのんだ??
    • Billing設定で無料枠設定アラートと請求アラートの設定
    • CloudWatchで課金設定を見守るようにする
    • CostExplorerを有効にしておく

AWSのアクセス設定

ローカルで実行する場合は上野アクセスキーとかはテキトーで良い。
ただ、これを使って将来的にデプロイする場合はリージョン舞に設定必要なので–profileをつけて固有の設定にしたほうが幸せ
–profile つけておくと、このオプションがないとawsコマンド通らなくなる

テストテンプレートをつくる

つまり必要なものは

  • functions
    • pythonのファイル群
    • lamdaで動かす関数たち。
  • test
    • function に対するテスト群
  • templete.yaml
    • SAMのテンプレート

SAMテンプレート大解剖

SAMテンプレート、意外に大きかったので必要な部分だけ作ってみる

  • AWSTemplateFormatVersion:テンプレートのフォーマットのバージョン(ほぼ固定)
  • Transform:AWS CloudFormation がテンプレートを処理するために使用するマクロ(ほぼ固定)
  • Description:テンプレートの説明
  • Resources: デプロイしたいAWSリソース(EC2、S3など)およびそのAWSリソースの設定
    • (FeedHandelLambda)はリソースの名前
    • Propertiesにリソースの情報
      • functions/lambda_function.lambda_handler:の部分に使用するファイルと関数名
      • Runtime: 環境
      • Role: でリソース情報を書く(ARNを書く)
  • Parameters:テンプレートで使いたい変数定義
  • Output:スタック作成後に出力したいもの

※ARN:https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html

ローカルでDynamoDBをつくる

Dockerを持ってくる。こちらを参考にした。
本当はComposeしよかと思ったが、できなかったので諦めてdocker上げた上で中身のjavaを落とすことにした

※Jarとかhttps://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html

Dockerを作る。一行目は停止中のコンテナ消す呪文。run しているのでこの地点でUPしている

実際に、利用する際にはendpointを8000にしているので、localhost:8000にして起動すれば起動する。

起動→テーブル定義create→Insertって感じでサクサク行く。localの場合はどちらもendpointをlocalhost:8000にしないとaws configureで指定したリモートのDBが更新される

AWS

Posted by tanico.rikudo