我正在尝试将AWS Lambda函数连接到RDS mysql数据库.
我只是想从我的lambda函数更新数据库.是否可以通过指定IAM角色和访问策略来访问RDS?
我可以使用mysql client连接到mysql数据库.但是当我尝试使用lambda时,我无法做到这一点.这是我的代码.
console.log('Loading function');
var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();
var mysql = require('mysql');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
var operation = event.operation;
delete event.operation;
switch (operation) {
case 'create':
var conn = mysql.createConnection({
host: 'lamdatest.********.rds.amazonaws.com', // RDS endpoint
user: 'user', // MySQL username
password: 'password', // MySQL password
database: 'rdslamda'
});
conn.connect();
console.log("connecting...");
conn.query('INSERT INTO login (name,password) VALUES("use6","password6")', function(err, info) {
console.log("insert: " + info.msg + " …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AWS文档建议的一个简单示例,使用策略json文件创建角色 http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html 我收到错误
A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Has prohibited field Resource
Run Code Online (Sandbox Code Playgroud)
这是命令,
>> aws iam create-role --role-name test-service-role --assume-role-policy-document file:///home/ec2-user/policy.json
A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Has prohibited field Resource
Run Code Online (Sandbox Code Playgroud)
该策略与示例中提到的策略完全相同
>> cat policy.json
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example_bucket"
}
}
Run Code Online (Sandbox Code Playgroud)
我的版本似乎是最新的
>> aws --version
aws-cli/1.9.9 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.9
Run Code Online (Sandbox Code Playgroud) 在赋予调用函数的所有权限之后.我的Lambda函数无法调用另一个函数.每次我有超时30 seconds timeout问题.看起来lambda无法获得另一个lambda函数
我的lambda属于同一地区,同一政策,同一安全组.两个lambda中的VPC也相同.现在唯一不同的是lambda函数
这是角色权利
1)创建 AWSLambdaExecute和AWSLambdaBasicExecutionRole
2)创建一个lambda函数,称为 Lambda_TEST
exports.handler = function(event, context) {
console.log('Lambda TEST Received event:', JSON.stringify(event, null, 2));
context.succeed(event);
};
Run Code Online (Sandbox Code Playgroud)
3)这是调用它的另一个函数.
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
var lambda = new AWS.Lambda();
exports.handler = function(event, context) {
var params = {
FunctionName: 'Lambda_TEST', // the lambda function we are going to invoke
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: '{ "name" : "Arpit" }'
};
lambda.invoke(params, function(err, data) {
if (err) {
context.fail(err);
} …Run Code Online (Sandbox Code Playgroud) 我cd进入所有pem/key文件所在的目录并运行以下命令:
aws iam upload-server-certificate
--server-certificate-name certificate_name
--certificate-body file://webservercertificate.pem
--private-key file://server.key
--certificate-chain file://certificate_chain_file.pem
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
调用UploadServerCertificate操作时发生客户端错误(InvalidClientTokenId):请求中包含的安全令牌无效.
我在"用户"中有1个"用户".该用户已被分配以下权限:
IAMFullAccess IAMReadOnlyAccess IAMUserSSHKeys
Run Code Online (Sandbox Code Playgroud)
我已下载此用户的凭据并将其放入我的用户变量中
AWS_ACCESS_KEY ****
AWS_SECRET_KEY ****
Run Code Online (Sandbox Code Playgroud)
我在弹性豆茎上有1个角色 aws-elasticbeanstalk-ec2-role
我有一个具有以下权限的用户foo(它不是任何组的成员):
{
"Statement": [
{
"Sid": "Stmt1308813201865",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然而,在我授予对经过身份验证的用户(可能适用于任何人)的完全访问权限之前,该用户似乎无法上传或执行任何操作.这仍然不允许用户更改权限,因为boto在尝试执行上传后会抛出错误key.set_acl('public-read').
理想情况下,这个用户可以完全访问bar存储桶,没有别的,我做错了什么?
我在Lambda函数上从S3 AWS服务获得了acccess denied错误.
这是代码:
// dependencies
var async = require('async');
var AWS = require('aws-sdk');
var gm = require('gm').subClass({ imageMagick: true }); // Enable ImageMagick integration.
exports.handler = function(event, context) {
var srcBucket = event.Records[0].s3.bucket.name;
// Object key may have spaces or unicode non-ASCII characters.
var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " "));
/*
{
originalFilename: <string>,
versions: [
{
size: <number>,
crop: [x,y],
max: [x, y],
rotate: <number>
}
]
}*/
var fileInfo;
var dstBucket = "xmovo.transformedimages.develop";
try {
//TODO: Decompress and …Run Code Online (Sandbox Code Playgroud) 我有两个AWS账户 - 比方说A和B.
在帐户B中,我定义了一个角色,允许从帐户A访问另一个角色.让我们将其称为Role-B
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:role/RoleA"
},
"Action": "sts:AssumeRole"
}]
}
Run Code Online (Sandbox Code Playgroud)
在帐户A中,我定义了一个允许root用户承担角色的角色.让我们称之为Role-A
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:root"
},
"Action": "sts:AssumeRole"
}]
}
Run Code Online (Sandbox Code Playgroud)
角色A附加了以下策略
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::****:role/RoleB",
"Effect": "Allow"
}]
}
Run Code Online (Sandbox Code Playgroud)
作为帐户A中的用户,我假设了角色-A.现在使用这个临时凭证,我想假设角色B并访问帐户B拥有的资源.我有以下代码
client = boto3.client('sts')
firewall_role_object = client.assume_role(
RoleArn=INTERMEDIARY_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
firewall_credentials = firewall_role_object['Credentials']
firewall_client = boto3.client(
'sts',
aws_access_key_id=firewall_credentials['AccessKeyId'],
aws_secret_access_key=firewall_credentials['SecretAccessKey'],
aws_session_token=firewall_credentials['SessionToken'], )
optimizely_role_object = firewall_client.assume_role(
RoleArn=CUSTOMER_IAM_ROLE_ARN,
RoleSessionName=str("default"), …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AWS API Gateway和IAM授权的一个小例子.AWS API Gateway生成以下端点:
https://xyz1234.execute-api.us-east-2.amazonaws.com/Users/users
Run Code Online (Sandbox Code Playgroud)
使用POST操作,没有参数.
最初我关闭了这个POST方法的IAM,我使用Postman验证了结果.然后我创建了一个新的IAM用户并将AmazonAPIGatewayInvokeFullAccess策略附加到用户,从而授予调用任何API的权限.为POST方法启用了IAM.
然后我去了Postman - 并使用AccessKey,Secret Key,AWS Region as us-east-2和Service Name 添加了Authorization,execute-api并尝试执行请求,但我得到InvalidSignatureException错误,403为返回码.
正文包含以下信息:
Signature expired: 20170517T062414Z is now earlier than 20170517T062840Z (20170517T063340Z - 5 min.)"
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在尝试通过amazon Elastic BeanStalk(使用本教程)部署我的django应用程序,但收到以下错误.
错误:Elastic Beanstalk找不到任何平台.确保您具有访问Elastic Beanstalk所需的权限.

我该如何解决这个问题?
谢谢!
django amazon-ec2 amazon-web-services amazon-iam amazon-elastic-beanstalk
我正在使用AWS的CloudFormation,最近我花了很多时间试图找出我创建的角色和附加策略的原因是没有启用我的ECS任务将消息发送到简单队列服务(SQS)队列.
我意识到我错误地将SQS权限策略附加到Execution Role我应该将策略附加到的时间Task Role.我找不到解释这两个角色之间差异的好文档.其中两个的CloudFormation文档位于:ExecutionRole和TaskRole
amazon-iam ×10
amazon-s3 ×3
aws-lambda ×3
aws-cli ×2
amazon-ec2 ×1
amazon-ecs ×1
amazon-rds ×1
aws-sdk ×1
boto3 ×1
django ×1
postman ×1
python ×1