[AWS]samを使用したサーバなしの導入
6520 ワード
👉 serverless?
クラウドネイティブ開発モデルは、開発者がサーバを管理することなくappを構築し、実行できるようにします.
serverless(=サーバなし)ですが、実際にはサーバは存在しません.
ただし、Server lessの場合は、アプリケーションの起動時にのみアクティブになります.
つまり、イベントが発生したときにのみリソースが割り当てられ、実行が終了したときにリソースが無効になるため、コストの観点からも効率的になります.
👉 SAM
SAM
は、Serverless Application Model
の略であり、awsが提供するサーバレスアプリケーションを作成するためのリソースの1つである.
lambdaを使用して配置する場合にCloudFormation
を使用すると、配置するサービスに比べてCloudFormation
は膨大であり、SAM
はこれらのCloudFormation
を簡単にすることができ、web開発にのみ使用することができる.
生成しやすいが、欠点は多くの制限があることだ.
api gatewayとlambdaを個別に作成し、それらを接続して同じ機能を実現できますが、SAMを使用すると同時に作成と接続が可能になるため、より簡単に実現できます.
端末でSAM
を使用するためには、aws-sam-cli
をインストールして使用する必要がある.$> brew tap aws/tap
$> brew install aws-sam-cli
作成▼▼
$> sam init
コマンドでSAM
アイテムを生成しようとする場合は、まず生成に使用するtemplateを選択します.
AWSが提供するテンプレートを使用する場合は、使用するテンプレートを選択します.
使用する言語を選択します.
使用するパッケージのタイプを選択します.
プロジェクトに名前を付けるとsam projectが生成されます.
作成が完了すると、次の構造を使用してファイルが作成されます.
その中で重要なファイルはtemplateです.yamlファイルtemplateですyamlにはプロジェクトに関する情報が含まれています.Resources
の次の表には、ユーザーがアクセスするenpointとアクセス時に実行するlambda関数(handler)がリストされています.Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
# 실행되는 lambda handler 함수 지정
Handler: app.lambda_handler
Runtime: python3.9
Architectures:
- x86_64
Events:
HelloWorld:
# AWS Gateway의 REST API를 생성
Type: Api
Properties:
Path: /hello
Method: get
実行されるlambda関数(handler)は、CodeUri에 작성된 dir > app.py
ファイル内のlambda_handler
という関数です.
関数が存在する디렉토리
はCodeUri
によって記述され、Handler
は파일명.함수명
によってhandler関数が記述される.
lambda_hanlder method 👇def lambda_handler(event, context):
return {
"statusCode": 200,
"body": json.dumps({
"message": "hello world",
# "location": ip.text.replace("\n", "")
}),
}
配備9660;▼
$> sam build
まず、上記コマンドを使用してtemplate.yaml
の説明に従ってプロジェクトを構築します.# 최초 수행 시
$> sam deploy --guided
# 이후 수행 시
$> sam deploy
デプロイはdeployコマンドで行います.
初期配置を行うには、--guided
オプションを使用する必要があります.
このオプションを使用すると、プロジェクトのパラメータを設定した後に配置されます.
配置が完了した後に設定されたエンドポイントにアクセスする場合は、handler関数で作成されたように操作できます.
SAM
のスタックは配置が完了し、aws console > CloudFormation > stack
で見つけることができます.
Lambda関数はaws console > Lambda > Functions
で決定できる.
削除▼▼▼
$> sam delete
生成されたSAM
はdeleteコマンドによって簡単に削除することができる.
Reference
この問題について([AWS]samを使用したサーバなしの導入), 我々は、より多くの情報をここで見つけました
https://velog.io/@___pepper/AWS-sam을-이용한-serverless-배포
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
$> brew tap aws/tap
$> brew install aws-sam-cli
$> sam init
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
# 실행되는 lambda handler 함수 지정
Handler: app.lambda_handler
Runtime: python3.9
Architectures:
- x86_64
Events:
HelloWorld:
# AWS Gateway의 REST API를 생성
Type: Api
Properties:
Path: /hello
Method: get
def lambda_handler(event, context):
return {
"statusCode": 200,
"body": json.dumps({
"message": "hello world",
# "location": ip.text.replace("\n", "")
}),
}
$> sam build
# 최초 수행 시
$> sam deploy --guided
# 이후 수행 시
$> sam deploy
$> sam delete
Reference
この問題について([AWS]samを使用したサーバなしの導入), 我々は、より多くの情報をここで見つけました https://velog.io/@___pepper/AWS-sam을-이용한-serverless-배포テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol