UIにアノテーションボタンを付けたい、でもユーザー管理機能は作りたくない(アノテーションするのは自分だけなので)。Gatewayを組み合せると簡単にできると聞いたので、やってみました。てこずったので正直あまり簡単ではなかったけど、やりたかったことはできたのでメモとして書き残しておきます。Gatewayで生やしていきます。Gatewayに生やしておくと後々の認証(Cognito)との接続がよいので、これを使います。Gatewayが何かを一言で説明するのは難しいけど、今回の用途に限れば裏側のロジックをLambdaで書きつつ、それをhttpで叩けるエンドポイントになってくれる君と思っておけばよい。別にlambdaじゃなくてもよいけど、今回はlambda。その他、リクエストをキャッシュさせたりといったこともできるようだが、今回の用途にはあまり関係ない。AWSロジックをLambdaに書く処理の本体はLambdaに書きます。Lambdaは色んな言語で書けるけど、手慣れているGolangで書きます。Gatewayの設定ロジックが書けたらaws-sam-cliを使って手元でテストしたりするとよい。start-apiとかやると手元でサーバーが走ります。applications動作確認ができたらsamを使ってLambdaにデプロイしていく。subnet内のRDSに接続する必要があったため、VPC内にLambdaを作った。samのテンプレートはこんな感じ。Gatewayのリソースも作られていると思う。Sharing)を有効にする必要がある。Gatewayの画面から「CORSの有効化」を選択、200のレスポンスヘッダーに以下のものを追加しておく。Cognitoの設定こことここを参考にしながらAWSコンソールでボタンをポチポチ押していく。ユーザープールとIDプールを作成していく。注意するところとしてこんな感じかな。認証プロバイダはCognitoだけで特に問題ないユーザーの登録はcliでやっておく。アプリクライアントの設定から「有効なIDプロバイダ」でcognitoを選択しておくAmplifyで認証されたユーザーのみにアノテーションボタンを見せる作成したユーザーがサインイン/アウトする画面はぐぐると色々出てくると思うので、それを参考に作る。今回は新しくユーザーがサインアップできる必要はなく、自分用のユーザーはcliで作成しているのでサインアップ画面は特に作らない。falseにして、それによって出し分けする。Gateway自体はインターネットで公開されているエンドポイントになっているため、誰でもエンドポイントを叩けばアノテーションをいじれてしまう。それでは困るので、API自体もCognitoで認証済みのユーザーのみ叩けるようにする。Role(arn:aws:iam::XXXXX:role/Cognito_YYYYYAuth_Roleのようなやつ)に追加で権限を付与する。invokeの権限を今回許可したいエンドポイントのみに与える。Gatewayの画面のオーソライザーから「新しいオーソライザーの作成」を選択。自分が作成したユーザープールを指定する。オーソライザーが作成できるとリソースの認証方法のCognitoが指定できるようになる。必須ではないと思うけど、「HTTPリクエストヘッダー」でAuthorizationを必須にしておくとよさそう。ここまで設定したらAPIのデプロイを行なって変更点を反映する。クライアント側の設定クライアント側は簡単。localStorageから必要なtokenを取得してきて、リクエストヘッダーに付けるだけ。}}困ってるところめちゃくちゃ困ってるというわけでもないけど、しばらくLambdaを起動させていなかった後の初回起動に時間がかかる。Interface)を作成する必要があるからだそうな。回避策としては定期的にポーリングしておくとよいらしいが、そこまで困ってるわけでもないので困りだしたらやる。Nginxで特定のパスはVPC内からしか接続できないようにするしょうもないことですが、Nginx初心者なので自分用メモです。Batchをよく使っています。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。