def get_old_ami():
# Describe target AMIs.
try:
response = ec2.describe_images(
Filters=[{'Name': 'name', 'Values': ['delete-sample*']}]
)
if response.get('ResponseMetadata', {}).get('HTTPStatusCode', -1) != 200:
raise('# Cannot describe images!')
images = response.get('Images')
print('# All delete-sample images:', len(images))
except ClientError as e:
print(e.response['Error']['Code'])
print(e.response['Error']['Message'])
logging.error("# Describe images error: %s", e)
return
seven_days = 604800
old_images = []
epoc_now = int(time.time())
print('# epoc now:', epoc_now)
# Those older than 7 days are subject to deletion.
for image in images:
creation_date = image.get('CreationDate')
datetime = dt.strptime(creation_date, "%Y-%m-%dT%H:%M:%S.000Z")
epoc_datetime = int(dt.timestamp(datetime))
if epoc_now - epoc_datetime > seven_days:
old_images.append(image.get('ImageId'))
return old_images
def lambda_handler(event, context):
# Get the AMI to be deleted.
delete_amis = get_old_ami()
print('# Target AMIs:', len(delete_amis))
print(delete_amis)
for delete_ami in delete_amis:
# Delete AMI.
unregister_ami(delete_ami)
# Delete Snapshots.
delete_related_snapshots(delete_ami)
return
懸念があったので恐る恐るインストール→有効化したのですが、案の定「All In One SEO」と競合している旨の通知がぴょこぴょこと出てきました。 ファイルの編集を行うことなく自動的にパンくずリストを出してくれるため、大変便利なプラグインでしたが、SEO関連で意図しない誤動作や面倒な副作用が発生すると困るため、やむなく不採用となりました。
<span property="itemListElement" typeof="ListItem"><span property="name"><a title="Go to the first page of posts by %title%" href="%link%" class="%type%" bcn-aria-current>%htitle%</a> の記事</span><meta property="position" content="%position%"></span>
<span property="itemListElement" typeof="ListItem"><span property="name">Search results for '<a property="item" typeof="WebPage" title="Go to the first page of search results for %title%." href="%link%" class="%type%" bcn-aria-current>%htitle%</a>'</span><meta property="position" content="%position%"></span>