我正在尝试将数据从 s3 存储桶加载到亚马逊 RDS 数据库。我知道这不是编程问题。但我真的很感激帮助。我使用了下面的代码:
aws rds restore-db-instance-from-s3 ^
--allocated-storage 250 ^
--db-instance-identifier myidentifier ^
--db-instance-class db.m4.large ^
--engine mysql ^
--master-user-name masterawsuser ^
--master-user-password masteruserpassword ^
--s3-bucket-name mybucket ^
--s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^
--s3-prefix bucketprefix ^
--source-engine mysql ^
--source-engine-version 5.6.27
Run Code Online (Sandbox Code Playgroud)
但是我收到了以下错误,尽管我给出了正确的 ARN 编号:
“An error occurred (InvalidParameterValue) when calling the RestoreDBInstanceFrom S3 operation: IAM role ARN value is invalid or does not include the required permissions for: S3_SNAPSHOT_INGESTION”
Run Code Online (Sandbox Code Playgroud)
对此有何评论?
谢谢
我对 AWS 还很陌生,我尝试设计第一个 API。我倾向于使用 AWS 的以下元素:Cognito(用于用户身份验证)、Lambda(用于 REST API)和 RDS(用于 postgres)。我开发了一个实体关系模型,其中包括一个用户实体。这个实体将有一个id、email、password、name(以及其他一些东西)。
该实体应该有一个 id,它将在 erm 图中的其他部分用作外键。
我想要的是:用户实体将完全由 Cognito 处理,但用户的 id 可以在我的 RDS 中使用。
Afaik Cognito 仅支持 Facebook、Google 和 Amazon 帐户。但我也可以添加我自己的身份验证方法。所以我必须走这条路。
我创建了aws_db_instance使用 Terraform 配置来配置 RDS MySQL 数据库。现在我的下一个问题是在 RDS 上执行 SQL 脚本(CREATE TABLE 和 INSERT 语句)。我做了以下但没有效果。terraform plan甚至看不到我在执行 sql 时所做的更改。我在这里错过了什么?谢谢。
resource "aws_db_instance" "mydb" {
# ...
provisioner "remote-exec" {
inline = [
"chmod +x script.sql",
"script.sql args",
]
}
}
Run Code Online (Sandbox Code Playgroud) 在正常的 MySQL 复制设置中,当主服务器出现问题时,从服务器可能会滞后并且没有最新数据。
在 AWS RDS 中,当从站自动提升为主站时,会提出以下问题:
我在 rds 上创建了一个 postgresql 数据库,我可以在终端上使用 psql 或在 Python 上使用 sqlalchemy 连接和查询它。使用 pgAdmin4 时,我无法查询或可视化数据,但可以创建/更改表、导入数据、...
我也尝试将它连接到 Metabase 和 DBeaver,但连接超时。
任何想法为什么会发生这种情况?
我还使用 pgAdmin3 连接了数据库,并且能够可视化数据并查询它,但是由于我使用的是 postgresql 11.4,pgAdmin3 不完全支持它。
当我在 pgAdmin 4 上打开查询工具时,我收到以下消息:
无法向服务器发送数据。套接字未连接无法发送启动包:套接字未连接。
我正在运行 Amazon Web Services RDS Aurora 5.6 数据库集群。有几个 lambda 与这些数据库实例对话,它们都是用 python 编写的。现在一切运行良好,但突然之间,从几天前开始,python 代码有时会开始抛出以下错误:
[ERROR] InterfaceError: 2003: Can't connect to MySQL server on 'CLUSTER-DOMAIN:3306' (-3 Temporary failure in name resolution)
这种情况每 1000 个左右的新连接就会发生 1 个。有趣的是,最近几天我没有接触过整个服务(自从它开始发生以来)。所有 lambda 都使用官方 MySQL 连接器客户端,并使用以下代码段在每次初始化时进行连接:
import mysql.connector as mysql
import os
connection = mysql.connect(user=os.environ['DATABASE_USER'],
password=os.environ['DATABASE_PASSWORD'],
database=os.environ['DATABASE_NAME'],
host=os.environ['DATABASE_HOST'],
autocommit=True)
Run Code Online (Sandbox Code Playgroud)
为了排除这是 Python MySQL 客户端中的问题,我添加了以下内容来解析主机:
import os
import socket
host = socket.gethostbyname(os.environ['DATABASE_HOST'])
Run Code Online (Sandbox Code Playgroud)
同样在这里,我有时会收到以下错误:
[ERROR] gaierror: [Errno -2] 名称或服务未知
现在我怀疑这与 DNS 有关,但由于我只是使用集群端点,因此我无能为力。有趣的是,我最近在不同地区也遇到了完全相同的问题,使用相同的设置(Aurora 5.6 集群,python 中的 lambda 连接到它)并且在那里发生了同样的情况。
我已经尝试重新启动集群中的所有机器,但问题似乎仍然存在。这真的是DNS问题吗?我能做些什么来阻止这种情况发生?
python amazon-web-services amazon-rds aws-lambda amazon-aurora
将 AWS Amplify 与 dynamodb 后端配合使用时,可以通过在本地修改文件然后执行amplify push.
我正在使用 RDS(amplify api add-graphql-datasource如文档中所述添加了它)。查询和解析器会自动在 AppSync 中设置。当我更新 Aurora RDS 架构时,我amplify api add-graphql-datasource再次运行以更新查询和解析器。
但是如何vtl使用 amplify CLI添加新的查询/突变并将它们绑定到新的解析器(在本地主机上的文件中定义)?
我想出了如何通过使用 AppSync Web 控制台来做到这一点。我修改架构,并创建解析器中的AppSync,然后使用amplify codegen来更新App.ts,queries.ts等等。但是,这种做法是不好的,至少有两个原因。
amplify codegen不更新schema.graphql本地主机上的文件。amplify push在对 AppSync 进行更改后执行使用本地主机上定义的架构并覆盖 AppSync 控制台中定义的架构。app/amplify/backend/<backend_name>/resolvers与 AppSync 不同步我会以错误的方式解决这个问题吗?在使用和 RDS 后端时,是否有更好的方法使用放大 CLI 更新架构/解析器?
谢谢!
amazon-web-services amazon-rds graphql aws-amplify aws-amplify-cli
我的 AWS 账户中有一个 RDS 数据库实例 (Aurora PostgreSQL) 设置。这是使用 AWS 控制台手动创建的。我现在想为该数据库创建 CloudFormation 模板 Yaml,如果需要,我可以稍后使用它来创建数据库。这也将帮助我在另一个环境中复制数据库。我还会将其用作基础设施自动化的一部分。
amazon-web-services amazon-rds aws-cloudformation amazon-aurora
我有一个使用 Aurora PostgreSQL 集群的应用程序 (AWS API Gateway)。
集群有 1 个读/写(主要)和一个读取器端点。
目前,我的应用程序连接到所有操作的特定编写器实例:rds-instance-1.xxx.ap-southeast-2.rds.amazonaws.com
但我有以下端点可用:
rds.cluster-xxx.ap-southeast-2.rds.amazonaws.com
rds.cluster-ro-xxx.ap-southeast-2.rds.amazonaws.com
rds-instance-1.xxx.ap-southeast-2.rds.amazonaws.com
rds-instance-1-ap-southeast-2c.xxx.ap-southeast-2.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
如果我正在执行读写操作,我应该连接到我正在使用的实例端点吗?或者我应该使用 rds.cluster-xxx.ap-southeast-2.rds.amazonaws.com 吗?使用不同端点有什么好处?我知道如果我连接到只读端点,我只能进行读取,但对于读/写,连接到以下内容有什么区别:
rds.cluster-xxx.ap-southeast-2.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
或者
rds-instance-1.xxx.ap-southeast-2.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
?
用于一般工作负载的正确/最佳端点是什么,为什么?
我正在尝试将镶木地板文件从 s3 加载到 AWS postgresql RDS。使用 aws_s3.table_import_from_s3 的数据导入对于 csv 文件工作正常,但是当我尝试对镶木地板文件使用类似的方法时,出现以下错误:
错误:编码“UTF8”的字节序列无效:0x00
在 AWS 文档中,我看到了自定义分隔符或 zip 文件的选项。是否可以导入镶木地板数据?
amazon-rds ×10
postgresql ×3
aws-lambda ×2
amazon-s3 ×1
aws-amplify ×1
aws-cognito ×1
data-import ×1
dbeaver ×1
graphql ×1
mysql ×1
parquet ×1
pgadmin ×1
python ×1
replication ×1
terraform ×1