Use Environment Variables in Lambda Functions
Serverless의 DynamoDB 구성 챕터 뒷부분에서 CloudFormation을 통해 테이블을 생성했습니다. 생성된 테이블은 현재 stage를 기반으로합니다. 즉, 우리 Lambda 함수에서 데이터베이스와 대화할 때 테이블 이름을 단순히 하드코딩할 수는 없습니다. dev
stage에서는 dev-notes
라고 불리우며 prod
에서는 prod-notes
라고 불릴 것입니다.
이와 같이 우리가 람다 함수에서 환경변수를 사용하여 어떤 테이블을 사용해야 하는지를 알려줍니다. 지금 create.js
를 열어 보면 다음 내용을 보게 될 것입니다.
const params = {
TableName: "notes",
Item: {
userId: event.requestContext.identity.cognitoIdentityId,
noteId: uuid.v1(),
content: data.content,
attachment: data.attachment,
createdAt: Date.now()
}
};
관련 테이블 이름을 사용하려면 TableName : "notes"
행을 변경해야합니다. Serverless의 DynamoDB 구성 챕터에서는 environment:
블록 아래의 serverless.yml
에도 tableName :
을 추가했습니다.
# These environment variables are made available to our functions
# under process.env.
environment:
tableName: ${self:custom.tableName}
거기에서 확인했듯이, 람다 함수에서 이것을 process.env.tableName
으로 참조할 수 있습니다.
그럼 해당 내용으로 변경해보겠습니다.
create.js
의 아래 행을
TableName: "notes",
다음 내용으로 바꿉니다.:
TableName: process.env.tableName,
같은 방법으로, get.js
파일도 수정합니다.:
TableName: "notes",
다음 내용으로 바꿉니다.:
TableName: process.env.tableName,
list.js
파일도 마찬가지로:
TableName: "notes",
수정합니다.:
TableName: process.env.tableName,
update.js
파일:
TableName: "notes",
마찬가지로 수정합니다.:
TableName: process.env.tableName,
마지막으로 delete.js
파일도:
TableName: "notes",
아래 내용으로 수정합니다.:
TableName: process.env.tableName,
코드 커밋
지금까지 수정한 내용을 커밋합니다.:
$ git add .
$ git commit -m "Use environment variables in our functions"
다음으로, 새로 구성된 Serverless 백엔드 API를 배포해보겠습니다.
For help and discussion
Comments on this chapter