我想编写一个响应S3 put事件的处理程序来转换任何上传到mp4的avi文件.我在Java中使用AWS工具包插件在Eclipse中完成它.对于视频转换,我使用ffmpeg和ffmpeg-cli-wrapper,我在源代码树中提供了ffmpeg的静态(linux)二进制文件.
我发现当我上传函数时,二进制文件被放入/var/task
,但是当我尝试使用我编写的测试函数时,我得到了"权限被拒绝"错误.
import net.bramp.ffmpeg.FFmpeg;
public class LambdaFunctionHandler implements RequestHandler<S3Event, String> {
private static final String FFMPEG = "/var/task/ffmpeg";
public String handleRequest(S3Event event, Context context) {
try {
FFmpeg ff = new FFmpeg(FFMPEG);
System.out.println(ff.version());
} catch (Exception e) {
e.printStackTrace();
}
return "foo";
}
}
Run Code Online (Sandbox Code Playgroud)
并且堆栈跟踪的第一行:java.io.IOException: Cannot run program "/var/task/ffmpeg": error=13, Permission denied
.
我该如何执行这个二进制文件?我已经完成了其他人的建议和chmod 755
上传之前的二进制文件,但它没有什么区别.
我有一个(非常基本但完美的)AWS lambda函数,用Python编写,但是有嵌入的凭据连接到:1)外部Web服务2)DynamoDB表.
该函数的作用非常基本:它针对服务POST(登录凭证#1),然后将部分响应状态保存到DynamoDB表中(使用AWS凭证#2).
这些是该功能的相关部分:
h = httplib2.Http()
auth = base64.encodestring('myuser' + ':' + 'mysecretpassword')
(response, content) = h.request('https://vca.vmware.com/api/iam/login', 'POST', headers = {'Authorization':'Basic ' + auth,'Accept':'application/xml;version=5.7'})
Run Code Online (Sandbox Code Playgroud)
然后
conn = boto.connect_dynamodb(aws_access_key_id='FAKEhhahahah',aws_secret_access_key='FAKEdhdhdudjjdjdjhdjjhdjdjjd')
Run Code Online (Sandbox Code Playgroud)
如何通过在函数内部不使用这些凭据来清理代码?
仅供参考此功能计划每5分钟运行一次(没有其他外部事件触发它).
我找不到使用cloudformation附加和装载卷的方法.
我可以使用VolumeAttachment附加卷; 但是,当我lsblk
在EC2实例处于运行状态后执行操作时,我将此附加实例视为已卸载.
有没有办法从Cloudformation文件挂载此实例?我可以使用linux命令安装它,但是更好地处理来自cloudformation的所有内容.
这是我到目前为止:
"MyEc2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyName" }
}
},
"MyVolume" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Size" : "50",
"AvailabilityZone" : "xyz"
}
},
"attachment" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : {
"InstanceId" : { "Ref" : "MyEc2Instance" },
"VolumeId" : { "Ref" : "MyVolume" },
"Device" : "/dev/sdh"
}
}
Run Code Online (Sandbox Code Playgroud)
当我lsblk
在实例上做的时候,这是我看到的结果:
xvda 202:0 0 8G 0 disk
??xvda1 …
Run Code Online (Sandbox Code Playgroud) 我试图检查现有的 s3 存储桶是否有标签,如果存储桶没有标签,将添加标签,我尝试了下面的代码
for region in region_list:
s3 = boto3.resource('s3', region)
s3_client = boto3.client('s3', region)
for bucket in s3.buckets.all():
s3_bucket = bucket
s3_bucket_name = s3_bucket.name
response = s3_client.get_bucket_tagging(Bucket=s3_bucket_name)
tagset = response['TagSet']
if len(response['TagSet'])==0:
print "s3 bucket not have tags, adding tags"
else:
pass
Run Code Online (Sandbox Code Playgroud)
但低于错误
Traceback (most recent call last):
File "C:\Python27\ec2info.py", line 235, in <module>
response = s3_client.get_bucket_tagging(Bucket=s3_bucket_name)
File "C:\Python27\lib\site-packages\botocore\client.py", line 314, in
_api_call
return self._make_api_call(operation_name, kwargs)
File "C:\Python27\lib\site-packages\botocore\client.py", line 612, in
_make_api_call
raise error_class(parsed_response, operation_name)
ClientError: An error occurred …
Run Code Online (Sandbox Code Playgroud) 启动新账户时,Amazon 会创建一个新的默认 VPC,其中包含 3 个子网、1 个安全组、1 个 ACL 和 1 个互联网网关。我想删除默认的 vpc 和与之关联的对象。我可以通过控制台来做到这一点,但我想通过 aws cli 来实现这一点,但我被卡住了。
当我尝试以下命令时:
aws ec2 delete-vpc --vpc-id $VpcId
Run Code Online (Sandbox Code Playgroud)
控制台返回 DependencyViolation 错误:
调用DeleteVpc操作时出现客户端错误(DependencyViolation):vpc 'vpc-13f53076'有依赖关系,无法删除。
所以我试图删除依赖项,但它并不适用于所有人!
对于互联网网关,我遇到了同样的错误:
调用 DeleteInternetGateway 操作时发生客户端错误 (DependencyViolation):internetGateway 'igw-d0f51bb5' 具有依赖关系,无法删除。
对于默认安全组。我收到以下错误:
调用DeleteSecurityGroup操作时出现客户端错误(CannotDelete):指定组:“sg-acca7bc”名称:“default”不能被用户删除
对于默认 ACL,我收到以下错误:
调用DeleteNetworkAcl操作时出现客户端错误(InvalidParameterValue):无法删除默认网络ACL acl-d3ba77b6
这是一个新账户,之前没有创建任何东西,除了亚马逊创建的默认 vpc。任何在正确方向上的帮助或指示将不胜感激。
我在 AWS 爱尔兰地区进行了设置,现在我想要在我的中国使用该 AMI。有谁知道完成任务的最佳实践是什么?任何帮助将不胜感激。
提前致谢。
因此,由于一些严格的版本控制要求,我需要将我的Ansible版本降级2.1.1.0
为1.9.4
我该怎么做(最好用brew)?
如果没有酿造,那么这可能是一种选择.否则我听说使用虚拟环境也可能是一个不错的选择,这样我就可以轻松运行版本2.1.1.0或1.9.4,类似于rbenv的工作方式.
我正在使用AWS Python SDK Boto3,我试图了解哪些安全组未使用.用boto2我做了但我不知道如何用boto3做同样的事情.
from boto.ec2.connection import EC2Connection
from boto.ec2.regioninfo import RegionInfo
import boto.sns
import sys
import logging
from security_groups_config import config
# Get settings from config.py
aws_access_key = config['aws_access_key']
aws_secret_key = config['aws_secret_key']
ec2_region_name = config['ec2_region_name']
ec2_region_endpoint = config['ec2_region_endpoint']
region = RegionInfo(name=ec2_region_name, endpoint=ec2_region_endpoint)
if aws_access_key:
conn = EC2Connection(aws_access_key, aws_secret_key, region=region)
else:
conn = EC2Connection(region=region)
sgs = conn.get_all_security_groups()
## Searching unused SG if the instances number is 0
def search_unused_sg(event, context):
for sg in sgs:
print sg.name, len(sg.instances())
Run Code Online (Sandbox Code Playgroud) 我正在尝试在OSX上开始使用AWS CLI.我是aws
通过pip 安装的.我在IAM中创建了一个新用户并附加了预建AdministratorAccess - AWS Managed policy
策略.接下来,我已经复制了生成的访问密钥ID和秘密访问密钥.
我创建的用户不在任何组中.他们的政策如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
接下来,我aws configure
从命令行运行,并输入我复制的访问密钥和密钥,加上区域代码eu-west-1
(由于IAM用户是全局的,因此似乎不太相关),输出格式为text
.
然后我尝试运行一个简单的测试命令来设置一个新组:
$ aws ec2 create-security-group --group-name my-sg --description "My security group" --debug
Run Code Online (Sandbox Code Playgroud)
但是,这失败并出现以下错误:
调用CreateSecurityGroup操作时发生客户端错误(UnauthorizedOperation):您无权执行此操作.
其他命令以相同方式失败.
我唯一的理论是它是键中的复制和粘贴错误,但我已经尝试过两次以上的整个过程并且两次都以相同的方式失败.我究竟做错了什么?有没有办法可以调试流程的哪个部分失败?
在特定的RDS列中作为日期,我会在用户的试验结束时保留信息.
我将在数据库中每天检查这些日期,并且当试用结束时少数几天,我想发送一封电子邮件(使用SES).
如何在AWS中运行定期任务来检查数据库?我知道我可以使用:
还有其他我错过的解决方案吗?
amazon-ec2 ×7
aws-lambda ×3
python ×3
aws-cli ×2
boto3 ×2
amazon-ami ×1
amazon-iam ×1
amazon-s3 ×1
amazon-vpc ×1
ansible ×1
aws-sdk ×1
boto ×1
linux ×1
macos ×1
rds ×1