Управление доступом
- AWS CLI
- Python API
Если AWS CLI еще не установлен, установите и настройте его. Для работы с объектным хранилищем используйте команды s3api и s3.
AWS CLI. Управление политиками доступа
Просмотреть политику доступа бакета
В терминале выполните команду:
aws s3api get-bucket-policy --bucket <bucket_name>
Укажите:
<bucket_name> — имя бакета.
Установить политику доступа на бакет
В терминале выполните команду:
aws s3api put-bucket-policy \
--bucket <bucket_name> \
--policy file://<path>
Укажите:
<bucket_name> — имя бакета;
<path> — путь к файлу с политикой доступа.
Удалить политику доступа с бакета
В терминале выполните команду:
aws s3api delete-bucket-policy --bucket <bucket_name>
Укажите:
<bucket_name> — имя бакета.
Примеры политик доступа см. в статье Примеры политик доступа. Подробнее о бакетах см. в статье О бакетах. Подробнее об управлении доступом см. в статье Управление доступом.
Boto3 — это библиотека Python, предоставляющая программный интерфейс (SDK) для взаимодействия с объектным хранилищем S3. Подробности см. в документации AWS Boto3.
Python API. Управление политиками доступа
Просмотреть политику доступа бакета
import boto3
from botocore.exceptions import ClientError
import json
session = boto3.session.Session(profile_name='default') #Создает сессию с использованием профиля default. Профиль находится в файле ~/.aws/credentials.
s3 = session.client('s3', endpoint_url='$endpoint')
def get_bucket_policy(bucket_name):
try:
response = s3.get_bucket_policy(Bucket=bucket_name)
policy = json.loads(response['Policy'])
print(json.dumps(policy, indent=2, ensure_ascii=False))
except ClientError as e:
if e.response['Error']['Code'] == 'NoSuchBucketPolicy':
print(f"Политика доступа не установлена для бакета '{bucket_name}'.")
else:
print(f"Ошибка: {e}")
get_bucket_policy('<bucket_name>')
Укажите:
<bucket_name> — имя бакета.
Установить политику доступа на бакет
import boto3
from botocore.exceptions import ClientError
import json
session = boto3.session.Session(profile_name='default') #Создает сессию с использованием профиля default. Профиль находится в файле ~/.aws/credentials.
s3 = session.client('s3', endpoint_url='$endpoint')
def put_bucket_policy(bucket_name, policy_path):
try:
with open(policy_path, 'r', encoding='utf-8') as f:
policy = json.load(f)
s3.put_bucket_policy(Bucket=bucket_name, Policy=json.dumps(policy))
print(f"Политика доступа установлена для бакета '{bucket_name}'.")
except Exception as e:
print(f"Ошибка: {e}")
put_bucket_policy('<bucket_name>', '<path>')
Укажите:
<bucket_name> — имя бакета;
<path> — путь к файлу с политикой доступа.
Удалить политику доступа с бакета
import boto3 from botocore.exceptions import ClientError
session = boto3.session.Session(profile_name='default') #Создает сессию с использованием профиля default. Профиль находится в файле ~/.aws/credentials. s3 = session.client('s3', endpoint_url='$endpoint')
def delete_bucket_policy(bucket_name):
try:
s3.delete_bucket_policy(Bucket=bucket_name)
print(f"Политика доступа удалена из бакета '{bucket_name}'.")
except ClientError as e:
print(f"Ошибка: {e}")
delete_bucket_policy('<bucket_name>')
Примеры политик доступа см. в статье Примеры политик доступа. Подробнее о бакетах см. в статье О бакетах. Подробнее об управлении доступом см. в статье Управление доступом.