这里我写了一个python程序来启动一个符合所有条件的实例。但执行程序时出现以下错误。botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter InstanceIds, value: i-012345678, type: <type 'str'>, valid types: <type 'list'>, <type 'tuple'>
.下面是我的代码:
import boto3
ec2=boto3.client('ec2',region_name='ap-south-1')
a=ec2.describe_instances()
for i in a['Reservations']:
for x in i['Instances']:
if x['InstanceId']=="i-12345678" and x['State'['Name']=='stopped':
n = x['InstanceId']
ec2.start_instances(InstanceIds=n)`
Run Code Online (Sandbox Code Playgroud) 我想将文件从一个s3存储桶复制到另一个存储桶.我收到以下错误:
s3.meta.client.copy(source,dest)
TypeError:copy()至少需要4个参数(给定3个)
我无法通过阅读文档找到解决方案.这是我的代码:
#!/usr/bin/env python
import boto3
s3 = boto3.resource('s3')
source= { 'Bucket' : 'bucketname1','Key':'objectname'}
dest ={ 'Bucket' : 'Bucketname2','Key':'backupfile'}
s3.meta.client.copy(source,dest)
Run Code Online (Sandbox Code Playgroud) 我想通过kms加密将文件从本地机器上传到s3.我一直在使用以下命令:
aws s3 cp /filepath s3://mybucket/filename --sse-kms-key-id <key id>
Run Code Online (Sandbox Code Playgroud)
它显示以下错误" 发生错误:调用PutObject操作时:使用AWS KMS托管密钥进行服务器端加密需要HTTP标头x-amz -server-side-encryption:aws:kms" 可能导致此错误的原因是什么?
有没有办法在 boto3 中的 2 个过滤器之间指定“或”条件?例如,我正在使用以下 EC2 服务调用:
ec2.snapshots.filter(
Filters=[
{
'Name': 'tag-key',
'Values': ['SomethingMeaningfull']
},
{
'Name': 'tag:Name',
'Values': ['OtherMeaningfullThibg']
},
],
DryRun=False)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,过滤器被评估为“AND”条件,但我希望将其评估为“OR”。这是你可以用 boto3 实现的吗?
我知道有很多类似的问题,但据我浏览,没有一个有解决方案。谈到这个问题,我创建了一个服务帐户(使用命令)、角色(使用 .yaml 文件)、角色绑定(使用 .yaml 文件)。该角色仅授予对 Pod 的访问权限。但是,当我使用角色所附加的 SA 登录仪表板(令牌方法)时,我可以不受任何限制地查看所有资源。这是我使用的文件和命令。
角色.yaml:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: assembly-prod
name: testreadrole
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
Run Code Online (Sandbox Code Playgroud)
角色绑定.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: testrolebinding
namespace: assembly-prod
subjects:
- kind: ServiceAccount
name: testsa
apiGroup: ""
roleRef:
kind: Role
name: testreadrole
apiGroup: rbac.authorization.k8s.io
Run Code Online (Sandbox Code Playgroud)
用于创建服务帐户的命令:
kubectl create serviceaccount <saname> --namespace <namespacename>
更新:我创建了一个服务帐户,但没有为其附加任何类型的角色。当我尝试使用此 SA 登录时,它让我通过,并且我能够执行各种活动,包括删除“秘密”。因此,默认情况下所有 SA 都假定管理员访问权限,这就是我上述角色不起作用的原因。这种行为是否符合预期,如果是,那么我该如何改变它?
我的目标是编写一个 Python 程序来提取文件中对象的体积STEP
。我发现steputils和aoxchange是 Python 中存在的两个库,但它们似乎都没有包含足够的有关从文件中提取卷/属性的文档。有没有可用的文件可以解释这一点?我尝试了类似的文件用例STL
,并能够使用numpy-stl成功实现它。我正在寻找像 numpy-stl 这样的STEP
文件。下面是我如何实现文件的示例代码STL
。
import numpy
from stl import mesh
your_mesh = mesh.Mesh.from_file('/path/to/myfile.stl')
volume, cog, inertia = your_mesh.get_mass_properties()
print("Volume = {0}".format(volume))
Run Code Online (Sandbox Code Playgroud) 我已经写了一个删除旧快照的程序,但是对我来说现在的问题是如果快照附有一个ami,那么它不会被删除并且程序也会停止,并显示以下消息:
botocore.exceptions.ClientError:调用DeleteSnapshot操作时发生错误(InvalidSnapshot.InUse):ami-12345当前正在使用快照snap-12345678
我希望程序仅跳过那些快照,然后继续删除其他快照。这是我的代码如下:
import boto3
import datetime
client = boto3.client('ec2',region_name='us-west-1')
snapshots = client.describe_snapshots(OwnerIds=['12345678'])
for snapshot in snapshots['Snapshots']:
a= snapshot['StartTime']
b=a.date()
c=datetime.datetime.now().date()
d=c-b
if d.days>10:
id = snapshot['SnapshotId']
client.delete_snapshot(SnapshotId=id)
Run Code Online (Sandbox Code Playgroud) 我想ec2
使用 boto 模块列出aws 帐户中的实例。我遇到的问题是
“您必须指定一个区域”。这是程序。
import boto3
ec2 = boto3.resource('ec2')
for instance in ec2.instances.all()
print instance.id, instance.state
Run Code Online (Sandbox Code Playgroud)
我没有指定任何默认区域。如何以编程方式指定它?
我正在尝试创建一个具有公共 IP 和私有 IP 配置的应用程序网关(标准 V2),但在创建时仅创建公共 IP,而找不到私有 IP 配置。我在我的 terraform 代码中根本没有看到任何错误。我不确定我在哪里遗漏了东西。下面是我的地形代码。
provider "azurerm" {
version = "=1.44"
}
provider "null" {
version = "=2.1"
}
resource "azurerm_public_ip" "appgwip" {
name = "appgwtestpip"
location = "Southeast Asia"
resource_group_name = "myrgname"
allocation_method = "Static"
sku = "Standard"
}
resource "azurerm_application_gateway" "appgw" {
depends_on = [azurerm_public_ip.appgwip]
name = "testappgw-sea"
resource_group_name = "myrgname"
location = "Southeast Asia"
sku {
name = "Standard_v2"
tier = "Standard_v2"
capacity = 2
}
gateway_ip_configuration {
name = "APPGW-IPCONFIG-test" …
Run Code Online (Sandbox Code Playgroud) azure terraform azure-application-gateway terraform-provider-azure
我的模板基本文件中sizeLimit
的属性emptyDir
设置为 2Gi。我想删除sizelimit
并只拥有emptyDir: {}
. 我无法使用 Kustomization 覆盖来实现这一点。我将在下面详细介绍我的文件夹结构和 kustomization yaml。
文件夹结构:
\napplication\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 majorbase\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 resources\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 web-template.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 minorbase\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 resources\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myoverlays\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 resources\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my-new-web.yaml\n
Run Code Online (Sandbox Code Playgroud)\n该文件夹myoverlays
的 kustomization.yaml 文件中包含以下内容
bases:\n- ../minorbase\npatchesStrategicMerge:\n- resources/my-new-web.yaml\n
Run Code Online (Sandbox Code Playgroud)\n该文件夹minorbase
的 kustomization.yaml 文件中包含以下内容
bases:\n- ../majorbase\n
Run Code Online (Sandbox Code Playgroud)\n该文件夹majorbase
的 kustomization.yaml 文件中包含以下内容
resources:\n- resources/web-template.yaml\n
Run Code Online (Sandbox Code Playgroud)\n我想要编辑的部分在主要库/模板中看起来像这样。
\nvolumes:\n - name: test-vol\n emptyDir:\n sizeLimit: "2Gi"\n
Run Code Online (Sandbox Code Playgroud)\n上述配置需要使用覆盖层进行更新,如下所示。
\n …boto3 ×5
python ×4
amazon-s3 ×2
kubernetes ×2
python-3.x ×2
amazon-ec2 ×1
aws-lambda ×1
azure ×1
dashboard ×1
encryption ×1
kustomize ×1
rbac ×1
step ×1
terraform ×1