AWS Amplify를 모든 (AWS) 서비스에 연결하는 가이드

6097 단어 amplifyserverlessaws

AWS 증폭



AWS Amplify는 Amplify가 AWS에 배포한 모든 프런트 엔드 애플리케이션과 백엔드 사이에서 접착제 역할을 하는 프레임워크입니다.

API, 스토리지, 인증 및 승인, 데이터베이스, 스토리지, AI 등을 설정하는 데 Javascript를 사용할 수 있습니다. 모든 블로그에서 저는 Amplify가 제공하는 서비스를 광범위하게 사용합니다.

다른 AWS 서비스에 연결해야 하는 경우에는 어떻게 해야 합니까?



Amplify 팀은 뛰어난 업무를 수행하고 있으며 AWS는 매일 많은 새로운 기능을 릴리스하므로 Amplify 팀이 이러한 기능을 Amplify 프레임워크에서 사용할 수 있도록 하는 것은 불가능합니다.

Amplify가 프런트엔드와 백엔드를 연결하는 역할을 한다면 Lambda는 AWS Amplify와 AWS 클라우드에서 사용 가능한 다른 모든 서비스를 연결하는 역할을 합니다. 따라서 AWS Amplify 팀에서 서비스를 제공하지 않는 경우 Amplify 프레임워크에서 제공하는 Lambda(함수)를 사용할 수 있습니다.

AWS SDK



SDK는 직접 설정하는 데 어려움 없이 응용 프로그램에서 사용할 수 있는 개체가 포함된 일종의 라이브러리입니다. 이 SDK를 패키지로 다운로드하고 애플리케이션과 함께 배포할 수 있습니다.

AWS SDK for JavaScript: A complete overview of all AWS services available in the AWS SDK



이 예에서는 nodeJS를 런타임으로 사용하여 Amplify 설정에 함수를 추가하고 SDK를 함께 배포하고 모든 AWS 서비스에 연결합니다.

시작하기



AWS Amplify 설정



먼저 AWS Amplify CLI를 설치해야 합니다. Amplify CLI는 다양한 AWS 서비스를 생성 및 배포할 수 있는 명령줄 도구입니다.

CLI를 설치하기 위해 다음 명령을 실행합니다.

$ npm install -g @aws-amplify/cli


다음으로 AWS 계정의 사용자로 CLI를 구성합니다.

$ amplify configure


For a video walkthrough of the process of configuring the CLI,



기능 추가



루트 디렉토리 유형에서

$ amplify add function 

이 단계를 따르세요:

* Provide a friendly name for your resource to be used as a label for this category in the project: **lambdafunction**
* Provide the AWS Lambda function name: **<press enter>**
* Choose the function runtime that you want to use: **NodeJS**
* Choose the function template that you want to use: **Hello world function**
* Do you want to access other resources created in this project from your Lambda function? **N**
* Do you want to invoke this function on a recurring schedule? **N**
* Do you want to edit the local lambda function now? **N**

이제 함수가 생성되었으며 프로젝트 디렉터리에서 찾을 수 있습니다.
Amplify > backend > function > name of your function
함수의 src 디렉토리로 이동하여 다음을 실행합니다.

npm install aws-sdk 

index.js 파일을 열고 이 코드를 붙여넣습니다. 이 예에서는 Pinpoint 애플리케이션을 만들 것입니다. 이것은 하나의 예이지만 새 AWS를 사용합니다(여기에서 모든 서비스를 추가할 수 있음). 예를 들어 Simple Notification Service의 경우 new AWS.SNS()입니다.

위의 링크에는 서비스 기능에 연결하는 방법에 대한 충분한 예가 있습니다.

const AWS = require("aws-sdk");
AWS.config.region = "eu-west-1"; // fill in your right region ******
const pinpoint = new AWS.Pinpoint();

exports.handler = async (event, context) => {
  // try {

  event = event.arguments.input;
  const arg = event.arg; // optional: when you want to provide input arguments


  // Create a AWS Pinpoint project
  const appID = await createApp();
};

async function createApp() {
  let params = {
    CreateApplicationRequest: {
      /* required */
      Name: "Test app" /* Campaign name, required */
    }
  };

  return new Promise((res, rej) => {
    pinpoint.createApp(params, function(err, data) {
      if (err) {
        rej(err);
        console.log(err, err.stack); // an error occurred
      } else {
        res(data.ApplicationResponse.Id); //console.log(data);// successful response
      }
    });
  });
}

구성을 클라우드로 푸시할 준비가 되었습니다.

Amplify push

이제 애플리케이션을 설정했으며 Amplify 프레임워크에서 아직 제공하지 않는 다른 AWS 서비스를 애플리케이션에 연결하는 방법을 알고 있습니다.

정책 추가



함수가 준비되었지만 함수가 다른 서비스를 호출할 수 없습니다. 여기에서 Lambda 실행 정책을 설정해야 합니다.

lambdafunction(또는 다른 이름)-cloudformation-template.json 열기

lambdaexecutionpolicy 섹션으로 이동하여 배열의 첫 번째 개체 뒤에 새 문을 추가합니다.

,
                        {
                            "Effect": "Allow",
                            "Action": [
                                "mobiletargeting:*"
                            ],
                            "Resource": {
                                "Fn::Sub": [
                                    "arn:aws:mobiletargeting:${region}:${account}:apps/*",
                                    {
                                        "region": {
                                            "Ref": "AWS::Region"
                                        },
                                        "account": {
                                            "Ref": "AWS::AccountId"
                                        }
                                    }
                                ]
                            }
                        }

이제 mobileatargeting(pinpoint)에 대한 실행 권한을 추가했습니다. 다른 서비스에 연결할 때 어떤 설정을 입력해야 하는지 궁금하시겠지만 해당 설정을 찾을 수 있습니다here.

최신 변경 사항 푸시:

amplify push

이전 블로그에서 람다 함수를 프런트 엔드 애플리케이션에 연결하는 방법을 볼 수 있습니다. 이 예제는 AWS Amplify를 각 AWS 서비스에 연결하는 데 중점을 두었습니다.

나에 대해서



저는 AWS Amplify의 열렬한 팬이며 이와 함께 제공되는 특정 주제에 대해 블로그를 작성합니다. 프레임워크, React of React Native와 관련하여 질문이 있으시면 언제든지 저에게 연락하실 수 있습니다.

트위터





새 블로그에 대한 업데이트를 원하십니까?
트위터에서 나를 팔로우하세요:

좋은 웹페이지 즐겨찾기