私は最初の無人のプロジェクトを展開しようとしており、私のdynamodb内の単純な項目を更新したいと考えています。だから私はserverless.ymlで単純なサービス作り始め:サーバレス機能の使用方法はありません。
service: serverless
provider:
name: aws
runtime: nodejs4.3
iamRoleStatements:
- Effect: "Allow"
Resource: "*"
Action:
- "dynamodb:*"
functions:
createMovie:
handler: handler.createMovie
events:
- http:
path: movies/create
method: post
integration: lambda
cors: true
をそれから私は私のアプリのDynamoDBの部分をアップリンクするオンラインいくつかのより多くのコードを発見し、一番下にserverless.ymlにそれを追加しました: リソース:
handler.jsでResources:
DynamoDbTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: moviesTwo
AttributeDefinitions:
- AttributeName: movieTitle
AttributeType: S
KeySchema:
- AttributeName: movieTitle
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
DynamoDBIamPolicy:
Type: AWS::IAM::Policy
DependsOn: DynamoDbTable
Properties:
PolicyName: lambda-dynamodb
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- dynamodb:GetItem
- dynamodb:PutItem
Resource: arn:aws:dynamodb:*:*:table/moviesTwo
Roles:
- Ref: IamRoleLambdaExecution
My機能は次のとおりです。
module.exports.createMovie = (event, context, cb) => {
const params = {
TableName: 'movies',
Item: {
"movieTitle": "Star Wars"
}
};
return dynamo.put(params, cb);
};
私はサーバレスデプロイを実行し、それは多くのレベルで働いていました。
エンドポイント:私のための私のラムダを作成し、私のエンドポイントとの機能与えたPOST - https://tbwg38fvc0.execute-api.us-east-1.amazonaws.com/dev/movies/create 機能:サーバレス-DEV-ハローサーバレス-DEV-createMovie
をしかし、私は郵便配達でそれを実行そして、私は内部サーバーエラーを取得し、私が呼び出してみました:サーバレス-devのは-createMovieは を-l -f サーバレスを呼び出すと、それは言う:
サーバレスエラー------- --------------------------------
Function "serverless-dev-createMovie" doesn't exist in this Service
だから私は私が間違っているの何混乱しています。 AWSにもう1つの設定がありますか?私は、呼び出しが機能するように設定する必要がありますか?
番号1が私の最初の問題でした。私がデプロイを終えたとき、私の機能はserverless-dev-createMovieであると私に言いました。ありがとう。私はより多くのバグを取り除いていますが、これは私を軌道に乗せました。 –
別の質問ですが、私は現在エンドポイントを実行していて、「サポートされていないメディアタイプ」を取得しています。それは何を指すのでしょうか? –
心配しないで、私はYouTubeのビデオを見て、郵便配達員と仕事をするために私のエンドポイントを得ました。私のdynamodbも更新されました!ありがとう。 –