Python在这里擦洗。 我还在学习python,所以很抱歉。 我试图创建一个Dict(我认为),然后将其表现为一个名为fileshare的变量,然后要调用名为fileshareARN的变量中的每个条目。因此,基本上,我希望在AWS ARN内部调用每个共享。例如,我希望每次调用share-A,share-B等。我想我需要设置一个函数或IF语句,但我不确定。
import boto3
client = boto3.client('storagegateway')
fileshare = [share-A, share-B, share-C, share-D]
response = client.refresh_cache(
FileShareARN='arn:aws:storagegateway:us-west-1:AWS-ID:share/{Fileshare-variable, share-ID should go here}.format',
FolderList=['/'],
Recursive=True
)
答案 0 :(得分:2)
您非常亲密!几点提示可以为您的Python之旅提供帮助:
Python不允许使用带连字符的变量名,因为连字符是用于减法的保留运算符。您只将它们列为占位符,但认为了解这些信息将很有帮助。
H3
,lists
和arrays
在Python中都是不同的数据结构。您可以在https://docs.python.org/3/tutorial/datastructures.html中详细了解它们,但是对于您的特定用例,如果您只是尝试存储变量的集合并对其进行迭代,则列表或数组可以很好地工作(尽管可以使用字典) )。
在Python中,dictionaries
和lists
是可迭代的,这意味着它们具有内置函数,可以自然地对其进行迭代以依次访问其构成值。
我们来看一个使用以下数组的示例:
arrays
,
在其他语言中,您可能习惯于使用以下语法定义自己的循环:
fruits = ['apples','bananas','oranges']
Python可以更轻松地启用相同的功能。
for (int i = 0; i < sizeOf(fruits); i++)
{
print(fruits[i]);
}
这里,循环中术语for item in fruits:
print(item)
的范围等于数组中当前索引(item
)处的值。
现在,要为您的示例执行相同的功能,我们可以使用相同的技术遍历您的ARN列表:
fruits
更改了文件共享中的占位符变量后,我用import boto3
client = boto3.client('storagegateway')
fileshare = [shareA, shareB, shareC, shareD]
for path in fileshare:
response = client.refresh_cache(
FileShareARN='arn:aws:storagegateway:us-west-1:AWS-ID:share/'+path,
FolderList=['/'],
Recursive=True
)
循环包装了现有的响应变量执行,并对添加到for
变量末尾的字符串做了些微更改。
希望这会有所帮助,欢迎使用Python!
答案 1 :(得分:0)
进行了更多研究,发现f.string格式似乎使python的生活变得容易。另外,由于我是在AWS Lambda中部署它的,所以我添加了一个处理程序。
#!/usr/bin/env python3
import boto3
def default_handler( event, context ):
print(boto3.client('sts').get_caller_identity())
client = boto3.client('storagegateway')
fileshare = ['share-A', 'share-B', 'share-C', 'share-D']
for path in fileshare:
response = client.refresh_cache(
FileShareARN = f"arn:aws:storagegateway:us-west-1:ARN-ID:share/{path}",
FolderList=['/'],
Recursive=True
)
print(response)
default_handler( None, None )