Amplify 프로젝트에 AWS 리소스를 추가하는 전체 설명서

8343 단어 awsserverless

이 기간 동안 AWS에는 대량의 서비스가 있다는 지적이 있었다. 모든 서비스는 고객의 문제점을 해결하기 위해 설계된 것이다.
AWS Amplify 그 중 일부 서비스를 조합하여 현재의 전문 전단 개발자를 위한 구조를 만들었다.이러한 서비스는 CLI 명령을 사용하여 추가할 수 있습니다.예를 들어, GraphQL API 또는 REST API를 추가하려면 를 입력합니다.amplify add api우리는 Amplify에서 생산 응용 프로그램을 구축하는 데 필요한 핵심 서비스를 통합했지만, 현실은 오늘날의 응용 프로그램은 각양각색의 서비스를 필요로 한다.최초의 솔루션은 175 개 이상의 서비스를 CLI 에 배치하는 것입니다.😅
나는 우리가 더 좋은 방법이 있다고 기쁘게 말했다.amplify add custom이 명령은 AWS Cloud Development Kit(CDK) 또는 AWS CloudFormation을 사용하여 파일을 생성합니다.그리고 이 창고를 사용하면 원하는 서비스를 추가할 수 있습니다.이 글에서 우리는 이러한 체험이 어떤 것인지를 소개할 것이다. 그러면 당신은 the ones offered directly through the CLI뿐만 아니라, 어떤 AWS 자원을 당신의 다음 프로젝트에 안심하고 추가할 수 있다.

사용자 지정 리소스 추가


앞에서 말한 바와 같이 CDK와 CloudFormation은 모두 지지를 받지만, 대부분의 전방 개발자들은 TypeScript를 작성해서 그들의 인프라를 만드는 것을 좋아하기 때문에 이것이 바로 우리가 본고에서 사용한 내용이다.amplify add custom를 실행하고 프롬프트를 따르면 Amplify에서 CDK 스택을 생성합니다.

이전에 CDK에서 TypeScript를 사용한 적이 있다면, 생성된 파일이 실행할 때 얻은 파일과 매우 비슷하기 때문에 매우 편안할 것입니다.
cdk init --template sample-app --language typescript
중요한 차이점은 우리가 몇 가지 예시를 제공하여 모두가 사용하기 시작할 수 있도록 하고, 몇몇 Amplify 조수는 Amplify와 CDK 백엔드를 쉽게 연결할 수 있다는 것이다.
설명된 예제를 삭제한 후 나머지 스크린샷은 다음과 같습니다.

SNS 테마 및 SQS 추가


네가 원한다면send a text message to a group of interested individuals.다운스트림 서비스가 차단되지 않도록 메시지를 대량 수신할 수 있도록 SQS 대기열을 추가합니다.
이 장면은 바로 우리가 제공한 상자를 열면 바로 사용할 수 있는 예 중의 하나이다!

CDK docs에서 본 모든 자원은 추가할 수 있다는 것을 기억하세요.

이해 확대 조수


이제 리소스를 추가하는 방법에 대해 알아보고 Amplify가 제공하는 몇 가지 추가 혜택을 살펴보겠습니다.
Amplify Helpers: 우리는 자동으로 @aws-amplify/cli-extensibility-helper라는 소프트웨어 패키지를 설치했습니다.
현재 두 가지 방법이 포함되어 있다. getProjectInfoaddResourceDependency.잠시 후에 자원 의존 항목을 추가하는 것에 대해 토론하지만, 우선 사용할 수 있는 프로젝트 정보를 탐색합시다.
이 방법을 사용하면 현재 두 가지 속성을 제공합니다: envNameprojectName.
envName 현재의 확대 환경에 대응한다.기본적으로 이것은dev이지만 실행amplify env add <envName>users can add branches to their backends을 통해git에서 일하는 것과 같다.

🚨Due to the lifecycle of when the environment name gets populated, the envName here is to be used for conditional checks only, not for naming resources:


if(AmplifyHelpers.getProjectInfo().envName === 'prod') {
  // create an IAM role to allow access to a prod account
}
또한 projectName는 처음 실행amplify add custom할 때 CLI에서 지정한 이름입니다(첫 번째 화면 캡처 참조).리소스를 작성할 때 본 바와 같이 프로젝트 조직에 도움이 됩니다.

🗒️Note that the above screenshot also shows the correct way to pull in the Amplify environment when naming resources.


Amplify를 사용하여 생성된 리소스

AmplifyHelpers.getProjectInfo() 말고 AmplifyHelpers.addResourceDependency() 봅시다.
이 방법은 Amplify CLI를 사용하여 생성된 리소스를 도입합니다.

🗒️ It's worth noting that when running amplify add custom, example 3 of the commented boilerplate code provides this function by default.


TypeScript를 사용하기 때문에 retVal 변수는 Amplify 자원을 참조하기 위해 입력되었습니다.

우연히 자원을 늘렸을 뿐인데 Arnregion 같은 값을 보지 못하면, 실행 amplify build 은 이 파일을 다시 생성합니다.addResourceDependency 함수에서 우리는 하나의 그룹을 전송해서 어떤 증폭 자원에 접근할 것인지를 지정할 수 있다. 그 중에서 모든 대상은 categoryresourceName 키가 있다.
지금까지 우리가 가진 것은 우리가 필요로 하는 유형 표시(int,string 등)이라는 것을 명심하세요.따라서 CDK 액세스 방법을 사용하여 실제 값을 추출할 수 있습니다.
const authArn = cdk.Fn.ref(retVal.auth.amplifystripestarter9420c337.UserPoolArn)

Lambda에서 사용자 지정 스택에 액세스


울타리의 다른 한 면을 보고 우리가 운행amplify push을 하고 사용자 정의 창고를 배치했다고 가정해 보세요.그리고 우리 프로젝트에 람다비아amplify add function를 추가합니다.이 경우 람다에게 SNS 호출 권한도 부여해야 한다.
이를 위해 custom-policies.json 파일을 사용하여 현재 생성된 각 Lambda로 파일을 생성할 수 있습니다.
[
    {
        "Action": ["SNS:Publish"],
        "Resource": ["arn:aws:sns:*:*:mySNSTopic-${env}"]
    }
]
지역과 계정의 어댑터를 지원합니다.또한 Amplify 환경에 ${env} 구문을 삽입합니다.

결론


이 예에서 SNS 테마를 구독하는 SQS 큐레이션을 살펴봤지만, 그뿐만이 아니었다.CDK를 사용하여 사용자 정의 리소스를 추가하여 Amplify CLI를 사용하여 만든 기존 리소스를 도입하고 정책을 업데이트하여 Lambda 함수가 외부 리소스를 호출할 수 있도록 함으로써 사용자는 이제 AWS 콘솔에서 소요되는 시간을 최소화하면서 정말 풍부한 애플리케이션을 만들 수 있습니다.
이것은 Amplify의 새로운 확장성 버전의 한 부분일 뿐입니다.모든 새로운 향상된 기능과 게시물을 이해하려면 클라우드 컴퓨팅 전문가5 new Amplify features to take your app to any scale에서 블로그 게시물을 보십시오.

좋은 웹페이지 즐겨찾기