Amplify Function(Lambda)에서 AppSync를 치려고 할 때 401 Unauthorized가 돌아옵니다.
클라우드 포메이션에 대해 상세하지 않아 근본 원인을 알 수 없어 최우선인지 아닌지 모르겠다.
컨디션
잘못된 내용
1. Amplify 설정
API(AppSync)에는 Amplify CLI에서 function을 만들거나 업데이트할 때 설정된 create 권한이 있습니다.
? Which setting do you want to update? Resource access permissions
? Select the categories you want this function to have access to. api
? Select the operations you want to permit on cheersake create
2. 401 Unauthorized
이렇게 램바다 안에서 앱Sync를 두드리면 401 Unauthorized가 돌아온다.AppSync에서 반환된 오류는 다음과 같습니다.
{
"graphQLErrors": [
{
"path": ["<フィールド名>"],
"data": null,
"errorType": "Unauthorized",
"errorInfo": null,
"locations": [{ "line": 2, "column": 3, "sourceName": null }],
"message": "Not Authorized to access <メソッド名> on type Mutation"
},
{
"path": ["<フィールド名>"],
"data": null,
"errorType": "Unauthorized",
"errorInfo": null,
"locations": [{ "line": 7, "column": 3, "sourceName": null }],
"message": "Not Authorized to access <メソッド名> on type Mutation"
}
],
"networkError": null,
"message": "GraphQL error: Not Authorized to access <メソッド名> on type Mutation\\nGraphQL error: Not Authorized to access <メソッド名> on type Mutation"
}
처리하다.
Function의
xxxxxx-cloudformation-template.json
변경해도 동일한 오류가 발생하지 않습니다.PolicyDocument의 Statiment 컨텐트를 변경하는 중입니다.
Before
xxxxxx-cloudformation-template.json
{
...
"Resources": {
...
"AmplifyResourcesPolicy": {
"DependsOn": ["LambdaExecutionRole"],
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "amplify-lambda-execution-policy",
"Roles": [
{
"Ref": "LambdaExecutionRole"
}
],
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["appsync:GraphQL"],
"Resource": [
{
"Fn::Join": [
"",
[
"arn:aws:appsync:",
{
"Ref": "AWS::Region"
},
":",
{
"Ref": "AWS::AccountId"
},
":apis/",
{
"Ref": "apicheersakeGraphQLAPIIdOutput"
},
"/types/create/*"
]
]
}
]
}
]
}
}
}
}
}
After
xxxxxx-cloudformation-template.json
{
...
"Resources": {
...
"AmplifyResourcesPolicy": {
"DependsOn": [
"LambdaExecutionRole"
],
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "amplify-lambda-execution-policy",
"Roles": [
{
"Ref": "LambdaExecutionRole"
}
],
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"appsync:Create*",
"appsync:StartSchemaCreation",
"appsync:GraphQL"
],
"Resource": [
{
"Fn::Join": [
"",
[
"arn:aws:appsync:",
{
"Ref": "AWS::Region"
},
":",
{
"Ref": "AWS::AccountId"
},
":apis/",
{
"Ref": "apicheersakeGraphQLAPIIdOutput"
},
"/*"
]
]
}
]
}
]
}
}
}
}
}
Reference
이 문제에 관하여(Amplify Function(Lambda)에서 AppSync를 치려고 할 때 401 Unauthorized가 돌아옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kecy/articles/6f9f75a08930ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)