如果您使用的是AWS Amplify版本4或更高版本,则需要添加相应的API密钥或Cognito用户池池ID,并确保该用户池已具有STORAGE权限。
以下是添加密钥的示例代码:
import Amplify, { Storage } from 'aws-amplify';
import awsConfig from './aws-exports';
Amplify.configure({
...awsConfig,
API: {
endpoints: [
{
name: 'myAPIGateway',
endpoint: 'https://my-api-gateway-url.com',
region: 'us-east-1',
custom_header: async () => {
return { Authorization: `Bearer ${(await Auth.currentSession()).getIdToken().getJwtToken()}` }
}
}
]
},
});
Storage.configure({
AWSS3: {
bucket: 'my-bucket-name',
region: 'us-east-1',
customPrefix: {
public: '',
},
identityPoolId: 'us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
userPoolId: 'us-east-1_xxxxxxxx',
userPoolWebClientId: 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
},
});
请注意,identityPoolId、userPoolId和userPoolWebClientId值应该是真实值,而myAPIGateway和my-bucket-name值应该更改为实际的API Gateway和S3存储桶名称。
如果您使用的是旧版本的AWS Amplify,请确保使用的是Storage.put方法的正确版本,并相应地更新此方法的参数。
最后还要确保Cognito用户池令牌有效且没有过期。如果令牌已过期,则需要刷新令牌,以便应用程序可以接收Cognito用户池中的相应权限。