前提
Vue.jsでamplifyを利用し
チャットシステムを作成しています。
そこでCognito認証を利用し、GraphqlからDynamoDBのデータを操作しています。
Cognito認証が通ったユーザーではGraphql→DynamoDBのデータ取得、書き込みなどできているのですが、
認証が通っていない(ログインしていない)ユーザーで特定のテーブルのデータ取得、書き込みなどができず悩んでいます。
実現したいこと
・Cognito認証が通っていない状態でGraphqlの特定のテーブルのデータ取得、書き込み
発生している問題・エラーメッセージ
エラーメッセージ {data: {…}, errors: Array(1)} data: {listCHATS: null} errors: Array(1) 0: {message: 'Unauthorized', errorType: 'Unauthorized', data: {…}, errorInfo: {…}, path: Array(1), …} length: 1 [[Prototype]]: Array(0) [[Prototype]]: Object
該当のソースコード
graphqlスキーマファイル
type CHAT @model @auth(rules: [
{ allow: public, provider: iam, operations: [read, create] },
{ allow: owner, provider: userPools},
{ allow: private, provider: iam, operations: [read, create] }
]) {
id: ID!
room_id: String!
room_group: String!
user: String
message: String!
entry_key: String
entry_value: String
uuid: String
active: Int
}
クエリ部分
// CHATリスト取得
public async getListItems() {
const filter ={
"room_id": {
"eq": this.$route.params.id
},"room_group": {
"eq": this.$route.params.room_group
},
}
const result: any = await API.graphql({
query: queries.listCHATS,
variables: {filter : filter},
authMode: "AWS_IAM"
});
this.listItems = result.data.listCHATS.items;
}
}
ソースコード vue.js、typescript
試したこと
ここに問題に対して試したことを記載してください。
・スキーマファイルにIAM認証を許可するよう追加
・クエリ部分にAWS_IAM認証を行うように追記
・aws console上でcognitoの認証されていないIDのアクセスを有効にすると設定
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

あなたの回答
tips
プレビュー