Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

驚くべき完成度!AWSでサーバレスAPIの作成をChatGPTに頼んだ結果〜AWSエンジニアの役割が変化する?!〜AWSCDKChatGPT記事投稿キャンペーン_ChatGPTGPT-4 はじめに ChatGPTがリリースされて日々、会話しては衝撃を受けています。 現在AWSエンジニアとして働いていますが、自分たちの働き方も大きく変わるのでは?!と感じて色々ChatGPTの使い方、自分達の働き方を模索しています。 AWSでのサーバレスAPIの作成をChatGPTに依頼たらどうなるのか? という事を現時点(2023/3/19のGPT-4)のChatGPTで試しながら、結果を元に自分たちの働き方がどう変わるのか考えてみたいと思います。 ChatGPTとは ChatGPTとは、OpenAIが開発した大規模な言語モデルです。 自然言語処理の能力が非常に高く、チャットベースで依頼・質問する事で質問応
はじめに 最近、プロジェクトで運用回りの設計を行う機会があったので、その際に学習したことをまとめました。AWSのLambdaなどを使っている方でロギングに興味があるけど、まだ良く理解できていないという方のためになれば幸いです。ここではサーバレス環境でのロギングの基本について解説しています。 また、監視に関した記事も投稿していますので、そちらも興味がございましたら一読下さい。 ログ戦略 マイクロサービスの場合、ログ戦略がとても重要になってきます。 マイクロサービスは複数のサービスから構成されているため、ログ戦略を間違えると調査が困難になり得るからです。ただし、AWSの場合は何でもかんでもログを出力するのは間違いです。標準的なログ出力機能を備えているサービスも多いため、重複が多くなりコスト増につながります。つまり、適切なログのみを出力する必要があります。 Lambdaのログ戦略 開発環境と本番
TLDR AWSで2022年の1月から9月までのアップデートが多数ありました。私(と、何人かのサポーター)が考えた、この期間内の打破されたアンチパターンを紹介します。32項目ありました! アンチパターンって何よ? 「AWSでこうしたい」という思いからAWSを使っていく方は多いはずです。 そのなかで、数多くのAWS使いこなしの工夫が生まれ、成功例が生まれていきました。AWSのサービスとして提供されていないことを工夫でなんとかした、そんな成功例たち。それが「秘伝のタレ」となり、「さわってはいけないもの」、あるいは「ロストテクノロジー」として、封をしたパターンとなっていないでしょうか? 動作やプロセス、構造について、当初は妥当であったのに、最終的に悪い結果が繰り返されるパターンであり、リファクタリングするための方法が存在するパターンこそがアンチパターンです。サービスアップデートされれば、いままで
概要 掲題の通り 公式のコードに変更を加えているので、自己責任で利用してください Lambda から NewRelic にログを転送するときに任意のタグをつけて送りたかった NewRelic の Logs の画面で任意のタグでフィルタリングしたかったため fluentd ではできそうだった http://katzchang.hatenablog.com/entry/2019/12/10/132210 方法 そもそも Lambda のスクリプトは以下にある https://github.com/newrelic/aws-log-ingestion.git 今回は、 function.py (下記リンクの箇所)に任意のタグを追加することで実現した https://github.com/newrelic/aws-log-ingestion/blob/59665cd2951fdc7ea3e50d9
この記事は AWS Advent Calendar 2019 16日目の記事でした。 2020/7/21 に AWS SAM CLI が General Available となっため、v1.0.0 時点の情報に更新しました。 2021/8/24 に v1.29.0 時点の情報に更新しました。 はじめに 2018年の5月にaws-sam-local 改め aws-sam-cli の新機能 sam init を試すという記事を投稿しました。 AWS SAM CLI は GitHub 上で開発が行われていますが、リリースのペースが早く日々機能追加や改善が行われています。結果として上記の記事の内容は一部古いものとなっています。本記事では2021年8月22日時点の最新バージョンである v1.29.0 までのリリースを踏まえた使い方をご紹介します。 AWS SAM と AWS SAM CLI Ser
背景 AWS LambdaでAPI開発をする AWS LambdaとAPI Gatewayを組み合わせることでサーバレスのAPIを開発することが可能です。サーバレスで構築することで手間をかけずにスケーラビリティやコストの最適化を手に入れることができ、さらに死活監視等が不要のため運用のコストを大幅に下げることができます。 開発パターンがまとまっていない サーバレスによるAPI開発は非常にメリットが多いのですが、開発パターンが様々あり一貫した方法があるわけではありません。例えば、Lambdaのデプロイは手動でzipをアップロードする方法や、SAM/ServerlesssFrameworkなどのデプロイ支援ツールを利用する方法、さらにオンラインエディタのCloud9を利用することもあります。関数ごとにディレクトリを分離する場合もあるし、ソースコードを共有してエントリーポイントだけ切り替える場合も
Lambda Layersで解決できること Lambdaの実行環境には追加ライブラリが存在しないため、ライブラリを使用する際はデプロイパッケージにライブラリを含める必要がありました。 しかしAWS Lambda Layersを使用することで、ライブラリなどの共通コンテンツをレイヤーとして作成することで、パッケージにライブラリを含める必要がなくなりました。 Lambda Layers Lambda Layersとは、複数のLambda関数で外部ライブラリやビジネスロジックを共有できる仕組みです。 イメージはこんな感じです。 使用するライブラリや共通のビジネスロジックをZIPアーカイブし、Layerに追加することができます。 デプロイパッケージの容量を少なくすることができるためLambdaのソースコードの管理が楽になります。 また依存関係をインストールしてパッケージ化する際に発生するエラーを回
SAM Localを利用してLocalで動かしているAWS Lambda からdynamodb-localにアクセスする方法AWSTypeScriptDockerDynamoDB この記事に書かれていること SAM CLIの環境構築方法 SAM CLIを使ってLocalでLambdaを起動する方法 SAM CLIを使ってLocalで起動しているLambdaから、Localで用意したDynamoDB containerにアクセスする方法 これらの処理を僕が趣味で作っているAWS Lambdaを例に説明します。 この記事に書かれていないこと SAM CLIとは何か? ( そのあたりの説明は公式ドキュメントに譲らせていただきます! ) Lambdaを利用する際のwebpackの設定 利用環境 nodejs8.10 TypeScript 3.4.5 SAM CLI 0.15.0 python 3.
DynamoDB Streamとは DynamoDB Streamは、DynamoDBに対する項目の追加、変更、削除をイベントとして検出できる機能です。DynamoDB Streamを使うことで、項目が追加・変更された時にプッシュ通知を飛ばしたりといった実装が可能になります。今回は、そのイベントをLambdaで受け取ってみたいと思います。 参考:DynamoDB ストリーム を使用したテーブルアクティビティのキャプチャ DynamoDB側でStreamを有効化 先んず、DynamoDBの概要のタブにある「ストリームの管理」から、Streamを有効化します。新旧イメージを選択すると、項目の変更時にLambdaが項目のBefore&Afterの両方を受け取ることができます。 DynamoDB Streamを受け取るためにLambdaに必要な権限 LambdaがDynamoDB Streamを受
はじめに AWS LambdaはEvent Drivenに設計されており、Cron Jobの様なSchedule Drivenで起動する事は想定されていません。LambdaをScheduleで起動する方法は、こんな方法も有るみたいですが、ここではAWSのData Pipelineの機能を使って、LambdaをSchedule Drivenで周期実行する方法をチラ裏しておきます。 ただし、Data Pipelineの制約として、実行周期は15分以上にしか設定出来ないので注意してください、1分毎の実行などはできません。 全体の流れ 設定する項目の流れは、以下の様になっています。 Lambda functionの作成 Lambda functionのnode.js codeの作成 Lambdaの実行に必要なIAM Roleを作成(or 既存のIAM Roleを設定)する LambdaのEvent
背景 やりたいこと 以下のようなアーキテクチャが実現できるか考えてみました。 SQSキューにメッセージが送信されたらLambdaを起動したい。 LambdaはDynamoDBにアクセスする。 DynamoDBのキャパシティユニットを一定に抑えるためにLambdaの同時実行数を制限したい。 同時実行数の制限によって処理されなかったSQSメッセージは元のSQSキューに戻し、Lambdaの同時実行数が減ったら改めて処理したい。 プログラムのエラーによりLambdaで処理できなかったSQSメッセージはデッドレターキューに転送したい。 関係するLambdaの機能 このアーキテクチャの実現にLambdaの以下の機能が利用できます。 Lambdaの関数レベルの同時実行数の管理 同時実行数の管理 - AWS Lambda LambdaのイベントソースとしてSQSを使う 先日、AWS LambdaでSQSを
SAMでの利用がメインとなるaws cloudformation packageコマンドですが、実は他にも色々なリソースをS3に自動アップロードしてくれます。 すぐ忘れてしまうので自分用メモということで以下にまとめておきます。 TL;DR aws cloudformation package便利! 対称読者 CloudFormationを利用してテンプレート以外のリソースをデプロイしている(したい)人 何ができる? aws cloudformation packageコマンドを利用するとテンプレート外のリソース(プログラムコード、ネストしているテンプレート、Swagger定義ファイル)をアップロードしてくれる 対応表 Type Property Zip
【AWS】Python Lambdaのdeploy - CloudFormation - Qiita 【AWS】Python Lambdaのdeploy - Chalice - Qiita CloudFormationを使えば、AWSの様々な設定やdeployを自動化できます。AWS Serverless Application Model (SAM) は、AWS が公式で提供しているサーバーレスアプリケーションのためのフレームワークです。Lambda, API Gateway, DynamoDB,Cognito,S3等、AWSのほとんどのリソースをひとまとめに管理 (作成 / 更新 / 削除) することができます。一部設定できない項目もあります。SAMはyamlファイルを書くことで定義できます。(JSONでも可能ですがここでは触れません) 定刻に定型のメールを送信するLambda関数をd
LambdaとRDSで爆死してみる 2019/12/05 Update こちらにRDS Proxyが発表されましたので、この投稿の内容はアンチパターンではなくなる可能性があります。 内容 LambdaとRDSは相性が悪い(というより、一緒に使うべきではない)というのはよく聞く話です。百聞は一見にしかずということで、爆死してみました 2019/07/19 Update こちらに続編を書きました 事前情報 なぜ相性が悪いかはこちらを。 http://keisuke69.hatenablog.jp/entry/2017/06/21/121501 https://qiita.com/teradonburi/items/86400ea82a65699672ad やってみる(概要) s3へのファイルPUTをトリガーにLambdaを起動させ。RDSのテーブルに「バケット名」と「ファイル名(key)」をI
何が起きたのか 作成していたアプリではサーバレス構成にてLambdaからRDS(MySQL)を呼び出していました。 リクエストが増えるとRDSのコネクション数が増加して すぐにDBコネクションエラーになってしまいました。 最大コネクションの上限値 結論から言うとLambdaとRDS(MySQL)は相性が良くないです。 理由はLambdaからRDSのDBコネクションを貼ると リクエスト単位でコネクションを張ってしまうため 仕組み上、同時接続に耐えられません (RDSのコネクション上限数が少ない) さらにVPC設定すると・・・ セキュリティのため、RDSをLambdaからのみアクセスさせるためには LambdaとRDSを両方とも VPC領域に置く必要があるのですが、Lambdaの起動が遅くなる場合があります。 これは、一定時間Lambdaがコールしない場合にスリープ状態になり、 起動する際にE
AWSでサーバレスなAPIの開発 AWS Lambdaの最大実行可能時間が5分から15分に拡大され、Lambdaを使ったサーバレスな業務ロジックも今後さらに増えていくことでしょう。 今回はAPI Gatewayと組み合わせてエンドポイントを作成し、DynamoDBでデータ管理を行うことで、コストを最小限に抑えたサーバレスAPIをAWS上に構築していきます。 さらにSAM(Serverless Application Model)を利用して、API GatewayとLambdaのデプロイまでをすべてコードで管理していくことを目指します。 シンプルなAPIを高速に開発・管理したいという時の手順にしていただければ幸いです。 今回作成するAPI一覧 リクエストパラメータの情報を返却するシンプルなAPI(hello-world) リクエストボディの情報をDynamoDBに登録するAPI(score-
2017/8: GA版にあわせて書き直しました CloudFront + S3オリジン構成の場合、Basic認証を使ったコンテンツ保護が出来ませんでしたが、Lambda@Edgeによって可能になりました。 下記の機能を提供しています。 一部のパスだけを認証の対象にできる。この例では、パスにsecretが含まれるものだけが認証の対象です Authorizationヘッダがなかった場合に401ではなく403を返すことで、ブラウザの認証ダイアログが表示される 認証エラー時にBodyを返却する 複数のクレデンシャルに対応している 今のバージョンは、クレデンシャルがそのままハードコードされてるので、ソースの取り扱いにご注意を。 パスワードはハッシュをかけた方が安全ですが、これはTODOとします。 'use strict'; exports.handler = (event, context, cal
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く