- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过带有 Cognito 身份验证的 ReactJs 前端将文件上传到私有(private) S3 存储桶。
S3 存储桶是所有默认值,包括选中“阻止所有公共(public)访问”。 CORS 已启用。还有一个 IAM 策略授予 cognito 用户池 Auth_Role 对其存储桶文件夹的读/写权限。
我正在使用带有配置的最新版本的放大(2.2.2):
配置.js
export default {
apiGateway: {
REGION: "ap-southeast-2",
URL: "https://myapi.execute-api.ap-southeast-2.amazonaws.com/Development"
},
s3: {
REGION: "ap-southeast-2",
BUCKET: "[Bucket_Name]"
},
cognito: {
REGION: "ap-southeast-2",
USER_POOL_ID: "ap-southeast-2_[ID]",
AUTH_URL:
"https://mysite.auth.ap-southeast-2.amazoncognito.com/login/",
APP_CLIENT_ID: "[APP_CLIENT_ID]"
}
};
import Amplify from "aws-amplify";
// ENABLE DEBUG MODE
window.LOG_LEVEL = "DEBUG";
Amplify.configure({
Auth: {
mandatorySignIn: true,
region: config.cognito.REGION,
userPoolId: config.cognito.USER_POOL_ID,
identityPoolId: config.cognito.IDENTITY_POOL_ID,
userPoolWebClientId: config.cognito.APP_CLIENT_ID,
cognitoAuthUrl: config.cognito.AUTH_URL,
cognitoRedirectUrl: config.cognito.REDIRECT_URL
},
Storage: {
region: config.s3.REGION,
bucket: config.s3.BUCKET,
identityPoolId: config.cognito.IDENTITY_POOL_ID
},
API: {
endpoints: [
{
name: "MyAPI-Dev",
endpoint: config.apiGateway.URL,
region: config.apiGateway.REGION,
authenticationType: "AMAZON_COGNITO_USER_POOLS",
custom_header: async () => {
return {
"Access-Control-Allow-Origin": "*"
};
}
}
]
}
});
<input type="file" />
带有
storage.put()
的元素称呼:
const handleSubmit = async e => {
var currentFile = e.target.files[0]; // there is only one file input for now
var customPrefix = `user_uploads/`; // Custom prefix for the file upload matching IAM policy
// This should upload the file to "user_uploads/{cognito_id}/{filename}
try{
var result = await Storage.put(currentFile.name, currentFile , {
contentType: currentFile.type,
level: "private",
customPrefix: customPrefix
});
console.log(result);
} catch (e) {
alert(e.message);
}
}
[DEBUG] 43:07.911 Credentials - getting credentials
[DEBUG] 43:07.912 Credentials - picking up credentials
[DEBUG] 43:07.912 Credentials - getting new cred promise
[DEBUG] 43:07.913 Credentials - checking if credentials exists and not expired
[DEBUG] 43:07.913 Credentials - need to get a new credential or refresh the existing one
[DEBUG] 43:07.915 AuthClass - Getting current user credentials
[DEBUG] 43:07.917 AuthClass - Getting current session
[DEBUG] 43:07.918 AuthClass - Getting the session from this user:
Object { username: "2a[GUID]0cf", pool: {…}, Session: null, client: {…}, signInUserSession: {…}, authenticationFlowType: "USER_SRP_AUTH", storage: Storage, keyPrefix: "CognitoIdentityServiceProvider.5a[ID]ci", userDataKey: "CognitoIdentityServiceProvider.5a[ID]ci.2a[GUID]0cf.userData", attributes: {…}, … }
[DEBUG] 43:07.921 AuthClass - Succeed to get the user session
Object { idToken: {…}, refreshToken: {…}, accessToken: {…}, clockDrift: 2 }
[DEBUG] 43:07.922 AuthClass - getting session success
Object { idToken: {…}, refreshToken: {…}, accessToken: {…}, clockDrift: 2 }
[DEBUG] 43:07.924 Credentials - set credentials from session
[DEBUG] 43:07.924 Credentials - No Cognito Federated Identity pool provided
[DEBUG] 43:07.925 AuthClass - getting session failed No Cognito Federated Identity pool provided
[DEBUG] 43:07.926 Credentials - setting credentials for guest
[WARN] 43:07.926 AWSS3Provider - ensure credentials error cannot get guest credentials when mandatory signin enabled
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListYourObjects",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::[bucket_name]"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"user_uploads/${cognito-identity.amazonaws.com:sub}"
]
}
}
},
{
"Sid": "ReadWriteDeleteYourObjects",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::[bucket_name]/user_uploads/${cognito-identity.amazonaws.com:sub}",
"arn:aws:s3:::[bucket_name]/user_uploads/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
最佳答案
线程是旧的,但是,我仍然把我找到的解决方案放在这个问题上。
我在尝试安装 S3 时收到“NoCredentails 错误”。
我正在使用 Amplify:4.50.2,使用 a: >amplify add auth 添加了一个身份验证。
发现问题是我的 Cognito 缺少身份池,但 Amplify 成功创建了用户池。
问题发生是因为我选择了选项:手动配置,同时添加了身份验证。
我通过删除现有的身份验证解决了这个问题:
运行:>amplify auth remove
并添加了一个新的并在添加过程中选择了“默认配置”选项:
$amplify 添加授权
默认配置(选择此项)
社交提供者(联盟)的默认配置
手动配置
我想了解更多。
做放大推送后,确保创建了用户池和身份池。
希望它可以帮助有类似问题的人。
关于reactjs - React AWS Amplify S3 Storage.put() No Credentials 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59853347/
我不小心删除了我的放大前端并创建了一个新前端。如何将现有的放大后端导入新创建的放大应用项目文件夹? 我按照后端标签上的步骤操作 amplify init --appId(“您的新AMPLIFY APP
尝试从CLI和Amplify studio UI控制台运行。从CLI中,它显示以下错误-。从它给出的以下用户界面错误-。。我已经检查了IAM的角色和权限,可以确认角色和权限都是按要求分配的,而且配额限
我有 4 个相关的 AWS 账户(服务、开发、QA、产品)。我希望服务包含 CI/CD 管道并部署到环境特定帐户。我在每个环境帐户中设置了一个 IAM 用户以用于部署。使用 AWS Amplify C
我的网站在 amplify 中托管了 2 年。我一切正常,但现在证书突然过期了。根据亚马逊的说法,它应该会自动续订,但它并没有发生...... 我试图联系亚马逊解决这个问题,但他们会向你收取费用,让你
我有一个使用 google federate 登录的 AWS Amplify 应用程序。这是我的数据模型。 type TriadeMetric @model @auth(rules: [{allow:
我正在为一个看起来像这样的博客创建一个 Amplify Schema: type Post @model { id: ID! caption: String! src: Strin
我有 AWS Amplify Apps,目前密码存储在 Amplify 环境变量中。我正在尝试使用 AWS secret 管理器来存储我的 secret 并将其用于我的 Amplify 项目 我查看了
我正在尝试通过 Amplify SDK 将 Pinpoint Analytics 实现到现有的 React Native 应用程序中。我们拥有自己的 authN 和 authZ 实现的现有用户群,因此
当我的应用用户使用他们的电话号码注册时,我想向他们的电话号码发送欢迎消息 (SMS)。我找不到有关此特定任务的官方文档。 最佳答案 Amazon 让您可以做到这一点。假设您使用 Cognito 进行注
我正在使用 AWS Amplify 构建一个 Web 应用程序。我正在使用 Appsync 和 DynamoDb,并且已经定义了我的 GraphQL 架构。现在,Amplify 提供了通过从命令行运行
我正在使用此 Amplify 指南 https://aws-amplify.github.io/docs/js/tutorials/building-react-native-apps/#connec
我可以在本地将我的应用程序发布到 S3 存储桶并且该应用程序可以运行。但是通过 AWS Amplify 控制台(Web)部署在后端的构建步骤失败。 由于缺少配置文件或目录,后端的构建步骤失败。 {
我正在关注本教程,当我这样做时 amplify pull --appId --envName staging 它会打开 Amplify Admin UI,但我不知道用什么登录? 有没有其他人有这个问
我开始使用 Amplify 项目 amplify init 我创建了一个环境并将其命名为 env并选择 AWS 配置文件 default . 好像env指向 default轮廓。 有什么办法可以让我e
我是使用 AWS Amplify 的新手,我刚刚发布了我自己的前端 WebApp,它是用 React 开发的。我刚刚压缩了我的构建文件夹并将生成的 zip 文件放到 AWS 控制台中。它工作正常。 但
我目前正在使用 AWS Amplify 来管理我的前端。我一直在整个控制台中手动注入(inject)环境变量。 虽然我已经看到(至少在这种情况下),但环境变量已得到正确保护,如 AWS docs 中所
我目前正在使用 AWS Amplify 来管理我的前端。我一直在整个控制台中手动注入(inject)环境变量。 虽然我已经看到(至少在这种情况下),但环境变量已得到正确保护,如 AWS docs 中所
我看到很多文档和地方说要使用 aws-amplify-react但是在文档中开始使用 react 我看到了这个包 @aws-amplify/ui-react使用模块withAuthentication
我正在使用 aws amplify 并尝试在我的根目录中运行命令“amplify configure”,但一直收到此错误响应 amplify : File C:\Users\munet\AppData
测试 我正在通过启动程序“Gatsby Default Starter”试用 gatsby gatsby new test 在没有进行任何定制的情况下,我在本地主机上对其进行了测试,图像显示正常。 2
我是一名优秀的程序员,十分优秀!