53ningen.com

@gomi_ningen's Website

SAM CLI + CDK を試す

  • 基本的に このドキュメント に書いてあることを試しただけの記録
  • ドキュメントは Python だが、手元では Lambda Runtime: Node.js14.X, CDK: TypeScript で試した

aws-sam-cli-beta-cdk の導入

brew install aws-sam-cli-beta-cdk

Project の作成

以下のようにプロジェクトの作成が可能

sam-beta-cdk init --project-type CDK --package-type Zip --runtime nodejs14.x --dependency-manager npm --app-template hello-world --cdk-language typescript --nam...
Read More

Secrets Manager を使ってみる

Secrets Manager への値の格納と取得

チュートリアルに書いてある内容をためしてみる。CLI からまずはシークレットの作成を行う

$ aws secretsmanager create-secret --name tutorials/MyFirstSecret --description "Basic Create Secret" --secret-string S3@tt13R0cks

続いて格納したシークレットのメタデータ、およびシークレットそのものを取得する

$ aws secretsmanager describe-secret --secret-id tutorials/MyFirstSecret
{
    "ARN": "...",
    "Name": "tutorials/MyFirstSecret",
    "Description": "Basic Create Secret",
    "LastChangedDate": ...,
    "LastAccessedDate": ...,
    "Vers...
Read More

SAM を利用して EFS ファイルシステムをマウントした Lambda 関数を作る

つい先日 Lambda で EFS のファイルシステムをマウントできるようになった らしいです。

SAM 側では AWS::Serverless::Function リソースが FileSystemConfigs というプロパティを追加してすでにこの機能に対応している らしいです。

また、これに関連して SAM のポリシーテンプレートに [EFSWriteAccessPolicy](https://github.com/awslabs/serverless-application-model/commit/b98e69c4c442c64c4bd40b1e41b4bb0dcb11283b#diff-b459a8d88303da927fe85516...

Read More

AppSync ことはじめ

入門 1: AppSync で Hello, World!

まず AppSync で "Hello, World!" という文字列を返す単純な GraphQL API を作成し、サービスの利用法をみていきます

スキーマの作成

まずは GraphQL SDL(Schema Definition Language) を用いて GraphQL API のインターフェースを定義していきます。次のような単純な User データを返却する user クエリを定義します。

schema {
  query: Query
}

type Query {
  user(id: ID!): User
}

type User {
  id: ID!
  name: String!
}

データソース/リゾルバの作成

ことはじめとして、決まった値を返すようなリゾルバを定義します。

{ "id": 1, "name": "hoge" }

データソースは None タイプを選択したものを指定し、レスポンスマッピングテンプレートにて前述の...

Read More

女性声優と自動化

この記事は「Wake Up, Girls! Advent Calendar 2019」18 日目の記事です

この記事では推しの声優の情報を自動的に収集する仕組みである @yoppinews bot の開発や運用についてご紹介します。

<a href="https://static.53ningen.com/wp-content/uploads/2020/01/05121137/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_56771_d6157d3e-6f06-6ed5-47c7-aa2d8b035017.png"><img src="https://static.53ningen.com/wp-content/uploads/2020/01/05121137/https___qiita-image-store.s3.ap-northeast-1.amazonaw...

Read More

SAM テンプレートと軽量ウェブフレームワーク

  • SAM で定義した Lambda 関数 + API Gateway の組み合わせの構成についてのメモ
  • SAM ベースなので以下のようなことが実現できる
    • 簡単な作成・破壊できるものをサクッと実装して、試したい
    • デプロイも楽したい
    • ただ API Gateway, Lambda 以外のリソースも必要でいい塩梅に一括で管理しときたい
  • 各 F/W を試している限りでは、ほぼほぼ素直に動く

python: flask

awsgi を使うと良き感じに使える

SAM テンプレート

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Globals:
  Function:
    Timeout: 10
    Runtime: python3.7

Resources:
  ApiBackendFunction:
    Type: AWS::Serverless::Function
    Properties:
      Co...
Read More

serverless-application-model & sam-cli コードリーディングメモ

SAM テンプレートでいろんなツールを構成しているなかで、なんかプルリク投げることが多くなってきたので、serverless-application-model と aws-sam-cli のソースコードの構成や設計、依存関係について気になったところを自分向けにメモ

ただ OSS のコードリーディングメモなので、いかなるときも GitHub リポジトリの現在の状況が正しいので、正確性は実際にリポジトリを参考に確認してください

あと自分は Python を今年の 3 月 9 日から書き始め、まだ数ヶ月しかたってないので実際 Python についてはよく知らないけどだいたい Pycharm がおしえてくれるのでそれを信じてる

リポジトリの構造メモ

SAM CLI と SAM の関係性

  • 参考 pull request: [Chore: Bump aws-sam-translator by jfuss · Pull Request #1043 · awslabs/aws-sam-cli](https://github.com/awslabs/aws-sam-cl...
Read More

AWS SAM CLI で sam deploy 時に notification-arns を指定する

SAM CLI の sam deploy コマンドは単に aws cloudformation deploy コマンドのエイリアスに過ぎないので、普通に notification-arns を指定できる。

stack の更新状態を Email とか Lambda + Slack 連携とかで通知したいみたいなときにコンソールいじらなくてよくて便利です。

これはソースコードをみると、簡単にわかる。

samcli/commands/deploy/init.py: aws-sam-cli/init.py at b6daabdcbc54af311a7a9c582e2429d3e622dcf5 · awslabs/aws-sam-cli

    
"""
CLI command for "deploy" comman...
Read More

SAM(Serverless Application Model) と Lambda Layers

以下のような内容を実現しようとしてみたメモ

  • Lambda の Layer も含めて同一の SAM file で管理したい
  • ステージごとに Layer も分離したい
    • 本番環境と開発環境の Layer は真面目に運用するなら分離したいところ
    • バージョンで分けるというのもあるけど、個人的にはそもそもリソースを分離したい

Directory 構造

以下のように Lambda 関数とレイヤを同一のリポジトリ、および SAM ファイルで管理します

.
├── config.dev
├── config.prod
├── config.template
├── deploy
├── src
│   └── python36
│       ├── hello_world
│       │   ├── __init__.py
│       │   ├── app.py
│       │   └── requirements.txt
│       └── layers
│           └── requests
│               ...
Read More

Copyright © 53ningen.com